Глоссарий¶
>>>¶The default Python prompt of the interactive shell. Often seen for code examples which can be executed interactively in the interpreter.
...¶Может обозначать:
The default Python prompt of the interactive shell when entering the code for an indented code block, when within a pair of matching left and right delimiters (parentheses, square brackets, curly braces or triple quotes), or after specifying a decorator.
The
Ellipsisbuilt-in constant.
- 2to3¶
A tool that tries to convert Python 2.x code to Python 3.x code by handling most of the incompatibilities which can be detected by parsing the source and traversing the parse tree.
2to3 is available in the standard library as
lib2to3; a standalone entry point is provided asTools/scripts/2to3. See 2to3 — Automated Python 2 to 3 code translation.- абстрактный базовый класс¶
Абстрактные базовые классы дополняют утиную типизацию, предоставляя способ определения интерфейсов в случаях, когда другие методы, вроде функции
hasattr(), были бы громоздкими или могли бы привести к трудноуловимым ошибкам (например, при работе с магическими методами). Абстрактные базовые классы вводят виртуальные подклассы — классы, которые не наследуются от другого класса, но тем не менее распознаются функциямиisinstance()иissubclass(); см. документацию модуляabc. Python предоставляет множество встроенных абстрактных базовых классов для структур данных (в модулеcollections.abc), чисел (в модулеnumbers), потоков (в модулеio), а также для механизма поиска и загрузки при импорте (в модулеimportlib.abc). Создавать собственные абстрактные базовые классы можно с помощью модуляabc.- аннотация¶
Метка, связанная с переменной, атрибутом класса, параметром функции или её возвращаемым значением, которая по соглашению используется в качестве подсказки типа.
Annotations of local variables cannot be accessed at runtime, but annotations of global variables, class attributes, and functions are stored in the
__annotations__special attribute of modules, classes, and functions, respectively.See variable annotation, function annotation, PEP 484 and PEP 526, which describe this functionality. Also see Annotations Best Practices for best practices on working with annotations.
- аргумент¶
Значение, передаваемое в функцию (или метод) при вызове функции. Есть два вида аргументов:
именованный аргумент: аргумент, которому в вызове функции предшествует идентификатор (например,
name=), или значение, передаваемое в словаре с предшествующим ему**. Например,3и5являются именованными аргументами в следующих вызовахcomplex():complex(real=3, imag=5) complex(**{'real': 3, 'imag': 5})
позиционный аргумент: аргумент, который не является именованным. Позиционные аргументы могут находиться в начале списка аргументов и/или передаваться как элементы итерируемого объекта, перед которым стоит
*. Например,3и5являются позиционными аргументами в следующих вызовах:complex(3, 5) complex(*(3, 5))
Аргументы присваиваются именованным локальным переменным в теле функции. Правила такого присваивания см. в разделе Calls. Синтаксически для представления аргумента можно использовать любое выражение. Его значение вычисляется и присваивается локальной переменной.
См. также статью глоссария параметр, раздел о различии между аргументами и параметрами в часто задаваемых вопросах и PEP 362.
- асинхронный менеджер контекста¶
Объект, управляющий окружением, доступным в инструкции
async with, посредством определения методов__aenter__()и__aexit__(). Представлен в PEP 492.- асинхронный генератор¶
A function which returns an asynchronous generator iterator. It looks like a coroutine function defined with
async defexcept that it containsyieldexpressions for producing a series of values usable in anasync forloop.Usually refers to an asynchronous generator function, but may refer to an asynchronous generator iterator in some contexts. In cases where the intended meaning isn’t clear, using the full terms avoids ambiguity.
Асинхронная генераторная функция может содержать выражения
await, а также инструкцииasync forиasync with.- асинхронный генераторный итератор¶
An object created by a asynchronous generator function.
Это асинхронный итератор, у которого вызов метода
__anext__()возвращает ожидаемый объект, выполняющий тело асинхронной генераторной функции до следующего выраженияyield.Каждое выражение
yieldвременно приостанавливает выполнение, сохраняя состояние выполнения (включая локальные переменные и ожидающие выполнения инструкции try). Когда асинхронный генераторный итератор фактически возобновляется при ожидании очередного объекта после вызова__anext__(), он продолжает выполнение с того места, на котором остановился. См. PEP 492 и PEP 525.- асинхронный итерируемый объект¶
Объект, который можно использовать в инструкции
async for. Должен возвращать асинхронный итератор из своего метода__aiter__(). Представлен в PEP 492.- асинхронный итератор¶
Объект, реализующий методы
__aiter__()и__anext__(). Метод__anext__()должен возвращать ожидаемый объект. Инструкцияasync forожидает объекты, возвращаемые методом асинхронного итератора__anext__(), до тех пор, пока тот не вызовет исключениеStopAsyncIteration. Представлен в PEP 492.- атрибут¶
Значение, связанное с объектом, на который обычно ссылаются по имени, с помощью выражения с точками. Например, если объект o имеет атрибут a, на него ссылаются как o.a.
Объекту можно присвоить атрибут, имя которого не является идентификатором в соответствии с Identifiers and keywords, например с помощью
setattr(), если объект это допускает. Доступ к такому атрибуту нельзя получить с помощью выражения с точкой — вместо этого его нужно получать с помощьюgetattr().- ожидаемый объект¶
Объект, который допускает ожидание, т.е. его можно использовать в выражении
await. Это может быть сопрограмма или объект с методом__await__(). См. также PEP 492.- BDFL¶
«Великодушный пожизненный диктатор» («Benevolent Dictator For Life»), он же Гвидо ван Россум, создатель Python.
- двоичный файл¶
Файловый объект, способный читать и записывать объекты, подобные байтам. Примеры двоичных файлов: файлы, открытые в двоичном режиме (
'rb','wb'или'rb+'),sys.stdin.buffer,sys.stdout.buffer, а также экземплярыio.BytesIOиgzip.GzipFile.См. также текстовый файл для файлового объекта, способного читать и записывать объекты
str.- заимствованная ссылка¶
В C API Python заимствованная ссылка — это ссылка на объект, владение которым не передаётся коду, использующему эту ссылку. Если объект уничтожается, такая ссылка становится висящим указателем. Например, сборщик мусора может удалить последнюю сильную ссылку на объект и тем самым уничтожить его.
За исключением случаев, когда объект не может быть уничтожен до последнего использования заимствованной ссылки, её рекомендуется преобразовать на месте в сильную ссылку, вызвав функцию
Py_INCREF(). А для создания новой сильной ссылки можно использовать функциюPy_NewRef().- объект, подобный bytes¶
Объект, поддерживающий Buffer Protocol и способный экспортировать непрерывный C-буфер. Сюда входят все объекты
bytes,bytearrayиarray.array, а также многие распространённые объектыmemoryview. Объекты, подобные bytes, можно использовать для различных операций с двоичными данными, включая сжатие, сохранение в двоичный файл и отправку через сокет.Некоторым операциям требуется, чтобы двоичные данные были изменяемыми. В документации такие объекты часто называются «объектами, подобными bytes, доступными для чтения и записи». Примерами изменяемых объектов буфера являются
bytearrayиmemoryviewтипаbytearray. Другим операциям требуется, чтобы двоичные данные хранились в неизменяемых объектах («объектах, подобных bytes, доступных только для чтения»); к таким объектам относятся, например,bytesиmemoryviewтипаbytes.- байт-код¶
Исходный код Python компилируется в байт-код — внутреннее представление программы Python в интерпретаторе CPython. Байт-код также кешируется в файлах
.pycблагодаря чему повторное выполнение того же файла происходит быстрее (повторной компиляции исходного кода в байт-код можно избежать). Этот «промежуточный язык» выполняется на виртуальной машине, которая исполняет машинный код, соответствующий каждой инструкции байт-кода. Следует учитывать, что байт-код не предназначен для работы на разных виртуальных машинах Python и не гарантирует стабильность между разными версиями Python.Список инструкций байт-кода можно найти в документации к модулю dis.
- вызываемый объект¶
Вызываемый объект — это объект, который можно вызвать, возможно, с набором аргументов (см. аргумент), используя следующий синтаксис:
callable(argument1, argument2, argumentN)
Функция, а также производный от неё метод, является вызываемым объектом. Экземпляр класса, реализующего метод
__call__(), также является вызываемым.- функция обратного вызова¶
Подпрограмма в виде функции, переданная в качестве аргумента для выполнения в некоторый момент в будущем.
- класс¶
Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.
- переменная класса¶
Переменная, определённая в классе и предназначенная для изменения только на уровне класса (то есть не в экземпляре класса).
- комплексное число¶
Расширение привычной системы действительных чисел, в которой все числа выражаются как сумма действительной и мнимой частей. Мнимые числа — это произведения действительных чисел и мнимой единицы (квадратного корня из
-1), которую в математике обычно обозначаютi, а в инженерных дисциплинах —j. Python имеет встроенную поддержку комплексных чисел, которые записываются с использованием последнего обозначения; мнимая часть записывается с суффиксомj, например3+1j. Чтобы получить доступ к комплексным аналогам функций модуляmath, используйтеcmath. Использование комплексных чисел — довольно продвинутая математическая возможность. Если вы не осознаёте необходимости в них, вы почти наверняка можете спокойно их игнорировать.- менеджер контекста¶
An object which controls the environment seen in a
withstatement by defining__enter__()and__exit__()methods. See PEP 343.- переменная контекста¶
A variable which can have different values depending on its context. This is similar to Thread-Local Storage in which each execution thread may have a different value for a variable. However, with context variables, there may be several contexts in one execution thread and the main usage for context variables is to keep track of variables in concurrent asynchronous tasks. See
contextvars.- непрерывный¶
Буфер считается непрерывным, если он является либо C-непрерывным, либо Fortran-непрерывным. Буферы нулевой размерности являются непрерывными и в смысле C, и в смысле Fortran. В одномерных массивах элементы должны быть расположены в памяти друг за другом в порядке возрастания индексов, начиная с нулевого. При последовательном обходе элементов многомерных C-непрерывных массивов в порядке возрастания их адресов в памяти быстрее всего изменяется последний индекс. В Fortran-непрерывных массивах, напротив, быстрее всего изменяется первый индекс.
- сопрограмма¶
Сопрограммы являются более обобщённой формой подпрограмм. Подпрограмма запускается в одной точке и завершается в другой. Сопрограмма же может запускаться, завершаться и возобновляться в различных точках. Она может быть реализована с помощью инструкции
async def. См. также PEP 492.- сопрограммная функция¶
Функция, возвращающая сопрограмму. Сопрограммная функция может быть определена с помощью инструкции
async defи может содержать выраженияawait, а также инструкцииasync forиasync with. Представлены в PEP 492.- CPython¶
Каноническая реализация языка программирования Python, распространяемая на python.org. Термин «CPython» используется, когда необходимо отличить эту реализацию от других, таких как Jython или IronPython.
- декоратор¶
A function returning another function, usually applied as a function transformation using the
@wrappersyntax. Common examples for decorators areclassmethod()andstaticmethod().Синтаксис декораторов является лишь синтаксическим сахаром: следующие два определения функций семантически эквивалентны:
def f(arg): ... f = staticmethod(f) @staticmethod def f(arg): ...
Тот же принцип применяется и к классам, но используется реже. Подробнее о декораторах см. документацию по определениям функций и определениям классов.
- дескриптор¶
Любой объект, определяющий методы
__get__(),__set__()или__delete__(). Когда атрибут класса является дескриптором, при обращении к этому атрибуту срабатывает специальный механизм связывания. Обычно выражение a.b для получения, изменения или удаления атрибута ищет объект с именем b в словаре класса a, но если b является дескриптором, вызывается соответствующий метод дескриптора. Понимание дескрипторов является ключом к глубокому пониманию Python, поскольку они лежат в основе многих возможностей языка, включая функции, методы, свойства, методы класса, статические методы и обращение к суперклассам.Подробнее о методах дескрипторов см. раздел Implementing Descriptors или Практическое руководство по дескрипторам.
- словарь¶
Ассоциативный массив, в котором произвольные ключи сопоставляются со значениями. Ключами могут быть любые объекты, имеющие методы
__hash__()и__eq__(). В Perl называется хешем.- включение словаря¶
Компактный способ обработать все или часть элементов итерируемого объекта и вернуть словарь с результатами.
results = {n: n ** 2 for n in range(10)}создаёт словарь, содержащий ключn, сопоставленный со значениемn ** 2. См. раздел Displays for lists, sets and dictionaries.- представление словаря¶
Объекты, возвращаемые методами
dict.keys(),dict.values()иdict.items(), называются представлениями словаря. Они предоставляют динамическое представление элементов словаря, то есть при изменении словаря эти изменения отражаются в представлении. Чтобы преобразовать представление словаря в полноценный список, используйтеlist(dictview). См. раздел Dictionary view objects.- строка документации¶
Строковый литерал, который является первым выражением в классе, функции или модуле. Хотя при выполнении набора инструкций он игнорируется, компилятор распознаёт его и помещает в атрибут
__doc__содержащего его класса, функции или модуля. Поскольку к нему можно получить доступ средствами интроспекции, это стандартное место для документации объекта.- утиная типизация¶
Стиль программирования, при котором тип объекта не используется для определения его интерфейса. Вместо этого метод или атрибут просто вызывается или используется («Если что-то выглядит как утка и крякает как утка, значит, это и есть утка».) Делая акцент на интерфейсах, а не на конкретных типах, хорошо спроектированный код повышает свою гибкость, позволяя выполнять полиморфную замену объектов. Утиная типизация избегает проверок с использованием
type()илиisinstance(). (Однако обратите внимание, что утиная типизация может быть дополнена абстрактными базовыми классами.) Вместо этого обычно используются проверкиhasattr()или программирование в стиле EAFP.- EAFP¶
«Проще попросить прощения, чем разрешения» («Easier to ask for forgiveness than permission»). Распространённый в Python стиль программирования, при котором предполагается наличие допустимых ключей или атрибутов, а исключения перехватываются, если это предположение оказывается неверным. Этот чистый и быстрый стиль характеризуется наличием множества инструкций
tryиexcept. Этот подход противопоставляется стилю LBYL, распространённому во многих других языках, например в C.- выражение¶
A piece of syntax which can be evaluated to some value. In other words, an expression is an accumulation of expression elements like literals, names, attribute access, operators or function calls which all return a value. In contrast to many other languages, not all language constructs are expressions. There are also statements which cannot be used as expressions, such as
while. Assignments are also statements, not expressions.- модуль расширения¶
Модуль, написанный на C или C++, использующий C API Python для взаимодействия с ядром и пользовательским кодом.
- f-строка¶
String literals prefixed with
'f'or'F'are commonly called «f-strings» which is short for formatted string literals. See also PEP 498.- файловый объект¶
Объект, предоставляющий файлово-ориентированный API (с такими методами, как
read()илиwrite()) к базовому ресурсу. В зависимости от способа создания, файловый объект может выступать посредником при доступе к реальному файлу на диске или к другому типу устройства хранения или связи (например, стандартному вводу/выводу, буферам в памяти, сокетам, каналам и т. д.). Файловые объекты также называются объектами, подобными файлам или потоками.На самом деле существует три категории файловых объектов: сырые двоичные файлы, буферизованные двоичные файлы и текстовые файлы. Их интерфейсы определены в модуле
io. Канонический способ создания файлового объекта — использование функцииopen().- объект, подобный файлу¶
Синоним файлового объекта.
- кодировка файловой системы и обработчик ошибок¶
Кодировка и обработчик ошибок, используемые Python для декодирования байтов, получаемых от операционной системы, и кодирования Unicode при передаче данных операционной системе.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов со значениями меньше 128. Если кодировка файловой системы не обеспечивает эту гарантию, функции API могут возбуждать исключение
UnicodeError.Функции
sys.getfilesystemencoding()иsys.getfilesystemencodeerrors()можно использовать для получения кодировки файловой системы и обработчика ошибок.Кодировка файловой системы и обработчик ошибок настраиваются при запуске Python функцией
PyConfig_Read(): см. членыfilesystem_encodingиfilesystem_errorsобъектаPyConfig.См. также кодировку локали.
- поисковик¶
Объект, который пытается найти загрузчик для импортируемого модуля.
Существует два типа поисковиков: поисковики мета-пути, используемые с
sys.meta_pathи поисковики элемента пути, используемые сsys.path_hooks.Подробнее см. в Finders and loaders и
importlib.- целочисленное деление с округлением вниз¶
Математическое деление, округляющее результат до ближайшего целого числа в меньшую сторону. Оператор целочисленного деления с округлением вниз — это
//. Например, выражение11 // 4вычисляется как2, в отличие от2.75, возвращаемого истинным делением чисел с плавающей точкой. Обратите внимание, что(-11) // 4равно-3, поскольку это значение-2.75, округлённое вниз. См. также PEP 238.- функция¶
Последовательность инструкций, возвращающая некоторое значение вызывающему её коду. Ей также может быть передано ноль или более аргументов, которые могут использоваться при выполнении её тела. См. также параметр, метод и раздел Function definitions.
- аннотация функции¶
Аннотация параметра функции или возвращаемого значения.
Аннотации функций обычно используются для подсказок типов. Например, ожидается, что эта функция принимает два аргумента типа
int, а также возвращает значение типаint:def sum_two_numbers(a: int, b: int) -> int: return a + b
Синтаксис аннотации функции описан в разделе Function definitions.
См. аннотация переменной и PEP 484, которые описывают эту функциональность. Рекомендации по работе с аннотациями см. также в Annotations Best Practices.
- __future__¶
Инструкция future,
from __future__ import <feature>, указывает компилятору обрабатывать текущий модуль с использованием синтаксиса или семантики, которые станут стандартными в будущей версии Python. Модуль__future__документирует возможные значения feature. Импортировав этот модуль и изучив его переменные, можно узнать, когда новая функциональность была впервые добавлена в язык и когда она станет (или стала) используемой по умолчанию:>>> import __future__ >>> __future__.division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
- сборка мусора¶
Процесс освобождения памяти, когда она больше не используется. Python выполняет сборку мусора с помощью подсчёта ссылок и сборщика циклического мусора, способного обнаруживать и разрывать циклы ссылок. Сборщиком мусора можно управлять с помощью модуля
gc.- генератор¶
A function which returns a generator iterator. It looks like a normal function except that it contains
yieldexpressions for producing a series of values usable in a for-loop or that can be retrieved one at a time with thenext()function.Usually refers to a generator function, but may refer to a generator iterator in some contexts. In cases where the intended meaning isn’t clear, using the full terms avoids ambiguity.
- генераторный итератор¶
An object created by a generator function.
Each
yieldtemporarily suspends processing, remembering the execution state (including local variables and pending try-statements). When the generator iterator resumes, it picks up where it left off (in contrast to functions which start fresh on every invocation).- генераторное выражение¶
An expression that returns an iterator. It looks like a normal expression followed by a
forclause defining a loop variable, range, and an optionalifclause. The combined expression generates values for an enclosing function:>>> sum(i*i for i in range(10)) # сумма квадратов 0, 1, 4, ... 81 285
- обобщённая функция¶
Функция, состоящая из нескольких функций, реализующих одну и ту же операцию для разных типов. Какая реализация должна использоваться во время вызова, определяется алгоритмом диспетчеризации.
See also the single dispatch glossary entry, the
functools.singledispatch()decorator, and PEP 443.- обобщённый тип¶
Тип, который можно параметризовать. Обычно это класс-контейнер, такой как
listилиdict. Используется для подсказок типов и аннотаций.Подробнее см. обобщённые псевдонимы типов, PEP 483, PEP 484, PEP 585 и модуль
typing.- GIL¶
- глобальная блокировка интерпретатора¶
Механизм, используемый интерпретатором CPython для обеспечения того, чтобы одновременно только один поток выполнял байт-код Python. Это упрощает реализацию CPython, поскольку объектная модель (включая такие важные встроенные типы, как
dict) автоматически становится безопасной при конкурентном доступе. Блокировка всего интерпретатора упрощает реализацию многопоточности в интерпретаторе, но за это приходится жертвовать значительной частью параллелизма, предоставляемого многопроцессорными системами.Однако некоторые модули расширений, как стандартные, так и сторонние, спроектированы так, чтобы освобождать GIL при выполнении вычислительно интенсивных задач, таких как сжатие или хеширование. Кроме того, при выполнении операций ввода-вывода GIL всегда освобождается.
Past efforts to create a «free-threaded» interpreter (one which locks shared data at a much finer granularity) have not been successful because performance suffered in the common single-processor case. It is believed that overcoming this performance issue would make the implementation much more complicated and therefore costlier to maintain.
- pyc на основе хеша¶
Файл кеша байт-кода, который использует хеш, а не время последнего изменения соответствующего исходного файла для определения его актуальности. См. Cached bytecode invalidation.
- хешируемый¶
Объект является хешируемым, если он имеет хеш-значение, которое никогда не меняется в течение его времени жизни (для этого требуется метод
__hash__()) и его можно сравнивать с другими объектами (для этого нужен__eq__()). Хешируемые объекты, которые считаются равными, должны иметь одинаковое хеш-значение.Хешируемость позволяет использовать объект в качестве ключа словаря и элемента множества, поскольку эти структуры данных используют хеш-значения внутри себя.
Большинство неизменяемых встроенных объектов Python являются хешируемыми; изменяемые контейнеры (такие как списки или словари) — нет; неизменяемые контейнеры (такие как кортежи и замороженные множества) хешируемы только в том случае, если их элементы хешируемы. Объекты, являющиеся экземплярами пользовательских классов, по умолчанию хешируемы. Все они неравны друг другу (кроме самих себя), а их хеш-значение получается из их
id().- IDLE¶
Интегрированная среда разработки и обучения для языка Python. IDLE — Python editor and shell — это базовый редактор и оболочка интерпретатора, входящие в стандартный дистрибутив Python.
- бессмертный¶
Бессмертные объекты — это деталь реализации CPython, представленная в PEP 683.
Если объект бессмертен, его счётчик ссылок никогда не изменяется и, следовательно, он никогда не освобождается во время работы интерпретатора. Например,
TrueиNoneбессмертны в CPython.- неизменяемый¶
An object with a fixed value. Immutable objects include numbers, strings and tuples. Such an object cannot be altered. A new object has to be created if a different value has to be stored. They play an important role in places where a constant hash value is needed, for example as a key in a dictionary.
- путь импорта¶
Список расположений (или элементов пути), в которых поисковик на основе пути ищет импортируемые модули. Во время импорта этот список расположений обычно берётся из
sys.path, но для подпакетов он также может быть получен из атрибута__path__родительского пакета.- импортирование¶
Процесс, посредством которого код Python из одного модуля становится доступен коду Python в другом модуле.
- импортёр¶
Объект, который находит и загружает модуль; является одновременно и поисковиком, и загрузчиком.
- интерактивный¶
Python has an interactive interpreter which means you can enter statements and expressions at the interpreter prompt, immediately execute them and see their results. Just launch
pythonwith no arguments (possibly by selecting it from your computer’s main menu). It is a very powerful way to test out new ideas or inspect modules and packages (rememberhelp(x)).- интерпретируемый¶
Python — это интерпретируемый язык, а не компилируемый, хотя различие может быть размытым из-за наличия компилятора байт-кода. Это означает, что исходные файлы можно запускать напрямую, без явного создания исполняемого файла, который затем запускается. Интерпретируемые языки обычно имеют более короткий цикл разработки и отладки, чем компилируемые, хотя их программы обычно выполняются медленнее. См. также интерактивный.
- завершение работы интерпретатора¶
При получении команды на завершение работы интерпретатор Python переходит в специальную фазу, в которой он постепенно освобождает все выделенные ресурсы, такие как модули и различные важные внутренние структуры. Он также несколько раз вызывает сборщик мусора. Это может привести к выполнению кода в пользовательских деструкторах или обратных вызовах слабых ссылок. Код, выполняемый на этапе завершения работы, может столкнуться с различными исключениями, поскольку используемые им ресурсы могут больше не функционировать (распространённые примеры — библиотечные модули или механизм обработки предупреждений).
Основная причина завершения работы интерпретатора заключается в том, что модуль
__main__или выполняемый скрипт завершил выполнение.- итерируемый¶
Объект, способный возвращать свои элементы по одному. К итерируемым относятся все последовательности (такие как
list,strиtuple), а также некоторые типы, не являющиеся последовательностями, напримерdict, файловые объекты и объекты любых определяемых вами классов, в которых реализован метод__iter__()или__getitem__(), реализующий семантику последовательностей.Итерируемые объекты можно использовать в цикле
forи во многих других местах, где требуется последовательность (zip(),map()и т. д.). Когда итерируемый объект передаётся в качестве аргумента встроенной функцииiter(), она возвращает итератор этого объекта. Такой итератор предназначен для однократного прохода по набору значений. При работе с итерируемыми объектами обычно нет необходимости самостоятельно вызыватьiter()или работать с объектами-итераторами. Инструкцияforделает это автоматически, создавая временную безымянную переменную, в которой хранится итератор на время выполнения цикла. См. также итератор, последовательность и генератор.- итератор¶
An object representing a stream of data. Repeated calls to the iterator’s
__next__()method (or passing it to the built-in functionnext()) return successive items in the stream. When no more data are available aStopIterationexception is raised instead. At this point, the iterator object is exhausted and any further calls to its__next__()method just raiseStopIterationagain. Iterators are required to have an__iter__()method that returns the iterator object itself so every iterator is also iterable and may be used in most places where other iterables are accepted. One notable exception is code which attempts multiple iteration passes. A container object (such as alist) produces a fresh new iterator each time you pass it to theiter()function or use it in aforloop. Attempting this with an iterator will just return the same exhausted iterator object used in the previous iteration pass, making it appear like an empty container.Больше информации можно найти в Iterator Types.
Деталь реализации CPython: CPython does not consistently apply the requirement that an iterator define
__iter__().- ключевая функция¶
Ключевая функция или функция сопоставления — это вызываемый объект, который возвращает значение, используемое для сортировки или упорядочивания. Например, функция
locale.strxfrm()используется для получения ключа сортировки, учитывающего специфичные для локали правила сортировки.Ряд инструментов Python поддерживает ключевые функции для управления порядком или группировкой элементов. К ним относятся
min(),max(),sorted(),list.sort(),heapq.merge(),heapq.nsmallest(),heapq.nlargest()иitertools.groupby().There are several ways to create a key function. For example. the
str.lower()method can serve as a key function for case insensitive sorts. Alternatively, a key function can be built from alambdaexpression such aslambda r: (r[0], r[2]). Also,operator.attrgetter(),operator.itemgetter(), andoperator.methodcaller()are three key function constructors. See the Sorting HOW TO for examples of how to create and use key functions.- именованный аргумент¶
Смотри аргумент.
- лямбда¶
Анонимная встроенная функция, состоящая из одного выражения, которое вычисляется при вызове функции. Синтаксис создания лямбда-функции:
lambda [parameters]: expression- LBYL¶
«Посмотри, прежде чем прыгнуть» («Look before you leap»). Стиль программирования, при котором перед выполнением вызовов или обращений явно проверяются предварительные условия. Этот стиль противопоставляется подходу EAFP и характеризуется наличием множества инструкций
if.In a multi-threaded environment, the LBYL approach can risk introducing a race condition between «the looking» and «the leaping». For example, the code,
if key in mapping: return mapping[key]can fail if another thread removes key from mapping after the test, but before the lookup. This issue can be solved with locks or by using the EAFP approach.- лексический анализатор¶
Официальное название для токенизатора. См. токен.
- список¶
A built-in Python sequence. Despite its name it is more akin to an array in other languages than to a linked list since access to elements is O(1).
- включение списка¶
Компактный способ обработать все или часть элементов последовательности и вернуть список с результатами. Например,
result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]создаёт список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Условиеifявляется необязательным. Если оно опущено, обрабатываются все элементыrange(256).- загрузчик¶
Объект, загружающий модуль. Он должен определять методы
exec_module()иcreate_module()для реализации интерфейсаLoader. Загрузчик обычно возвращается поисковиком. См. также:- кодировка локали¶
В Unix это кодировка локали LC_CTYPE. Её можно установить с помощью
locale.setlocale(locale.LC_CTYPE, new_locale).В Windows это кодовая страница ANSI (например:
"cp1252").В Android и VxWorks Python использует
"utf-8"в качестве кодировки локали.Для получения кодировки локали можно использовать
locale.getencoding().- магический метод¶
Неформальный синоним термина специальный метод.
- отображение¶
Контейнерный объект, который поддерживает поиск по произвольным ключам и реализует методы, определённые в абстрактных базовых классах
collections.abc.Mappingилиcollections.abc.MutableMapping. Примеры включаютdict,collections.defaultdict,collections.OrderedDictиcollections.Counter.- поисковик мета-пути¶
Поисковик, возвращаемый при поиске в
sys.meta_path. Поисковики мета-пути связаны с поисковиками элемента пути, но отличаются от них.См.
importlib.abc.MetaPathFinderдля получения информации о методах, которые реализуют поисковики мета-пути.- метакласс¶
Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за обработку этих трёх аргументов и создание класса. Большинство объектно-ориентированных языков программирования предоставляют реализацию по умолчанию. Особенность Python заключается в том, что можно создавать пользовательские метаклассы. Большинству пользователей этот инструмент никогда не требуется, но когда возникает такая необходимость, метаклассы могут предоставлять мощные и элегантные решения. Они использовались для ведения журнала доступа к атрибутам, добавления потокобезопасности, отслеживания создания объектов, реализации синглтонов и решения множества других задач.
Подробнее см. Metaclasses.
- метод¶
Функция, определённая внутри тела класса. Если она вызывается как атрибут экземпляра этого класса, метод получает объект экземпляра в качестве первого аргумента (который обычно называется
self). См. также функция и вложенная область видимости.- порядок разрешения методов¶
Порядок разрешения методов — это порядок, в котором базовые классы просматриваются при поиске члена класса. См. The Python 2.3 Method Resolution Order для подробностей алгоритма, используемого интерпретатором Python начиная с версии 2.3.
- модуль¶
Объект, который служит организационной единицей кода Python. Модули имеют пространство имён, содержащее произвольные объекты Python. Модули загружаются в Python в процессе импорта.
См. также пакет.
- спецификация модуля¶
Пространство имён, содержащее связанную с импортом информацию, используемую для загрузки модуля. Экземпляр
importlib.machinery.ModuleSpec.См. также Module specs.
- MRO¶
Смотри порядок разрешения методов.
- изменяемый¶
Mutable objects can change their value but keep their
id(). See also immutable.- именованный кортеж¶
Термин «именованный кортеж» применяется к любому типу или классу, который наследуется от кортежа и чьи индексируемые элементы также доступны через именованные атрибуты. У такого типа или класса могут быть и другие возможности.
Несколько встроенных типов являются именованными кортежами, включая значения, возвращаемые функциями
time.localtime()иos.stat(). Другой пример —sys.float_info:>>> sys.float_info[1] # доступ по индексу 1024 >>> sys.float_info.max_exp # доступ к именованному полю 1024 >>> isinstance(sys.float_info, tuple) # вид кортежа True
Некоторые именованные кортежи являются встроенными типами (как в приведённых выше примерах). Кроме того, именованный кортеж можно создать из обычного определения класса, который наследуется от
tupleи определяет именованные поля. Такой класс можно написать вручную, создать с помощью наследования отtyping.NamedTupleили с помощью фабричной функцииcollections.namedtuple(). Последние два способа также добавляют дополнительные методы, которых может не быть у написанных вручную или встроенных именованных кортежей.- пространство имён¶
Место, где хранится переменная. Пространства имён реализованы в виде словарей. Существуют локальное, глобальное и встроенное пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён обеспечивают модульность, предотвращая конфликты имён. Например, функции
builtins.openиos.open()различаются своими пространствами имён. Пространства имён также повышают читаемость и удобство сопровождения, показывая, какой модуль реализует функцию. Например, записьrandom.seed()илиitertools.islice()показывает, что эти функции реализованы соответственно модулямиrandomиitertools.- пакет пространства имён¶
Пакет, который служит только контейнером для вложенных пакетов. Пакеты пространства имён могут не иметь физического представления и, в частности, отличаются от обычных пакетов тем, что не имеют файла
__init__.py.Пакеты пространства имён позволяют нескольким отдельно устанавливаемым пакетам иметь общий родительский пакет. В остальных случаях рекомендуется использовать обычный пакет.
Для получения дополнительной информации см. PEP 420 и Namespace packages.
См. также модуль.
- вложенная область видимости¶
Возможность ссылаться на переменную во внешнем определении. Например, функция, определённая внутри другой функции, может обращаться к переменным внешней функции. Обратите внимание, что вложенные области видимости по умолчанию позволяют только обращаться к переменным на чтение, но не выполнять присваивание в них. Локальные переменные при чтении и записи используются в самой внутренней области видимости. Аналогично, глобальные переменные при чтении и записи работают с глобальным пространством имён. Инструкция
nonlocalпозволяет выполнять запись во внешние области видимости.- класс нового стиля¶
Устаревшее название разновидности классов, которое теперь используется для всех объектов-классов. В более ранних версиях Python только классы нового стиля могли использовать новые универсальные возможности Python, такие как
__slots__, дескрипторы, свойства,__getattribute__(), методы класса и статические методы.- объект¶
Любые данные с состоянием (атрибутами или значением) и определённым поведением (методами). Также базовый класс верхнего уровня для любого класса нового стиля.
- пакет¶
Модуль Python, который может содержать вложенные модули или, рекурсивно, вложенные пакеты. Технически, пакет — это модуль Python с атрибутом
__path__.См. также обычный пакет и пакет пространства имён.
- параметр¶
Именованная сущность в определении функции (или метода), задающая аргумент (или в некоторых случаях аргументы), который функция может принимать. Существует пять видов параметров:
позиционный или именованный: задаёт аргумент, который можно передать как позиционный или как именованный аргумент. Это вид параметра по умолчанию, например foo и bar в следующем примере:
def func(foo, bar=None): ...
только позиционный: задаёт аргумент, который можно передать только по позиции. Параметры, доступные только по позиции, можно определить, добавив символ
/в список параметров определения функции после них, например posonly1 и posonly2 в следующем примере:def func(posonly1, posonly2, /, positional_or_keyword): ...
только именованный: задаёт аргумент, который можно передать только по имени. Параметры, доступные только по имени, можно определить, добавив один параметр с переменным числом позиционных аргументов или отдельный символ
*в список параметров определения функции перед ними, например kw_only1 и kw_only2 в следующем примере:def func(arg, *, kw_only1, kw_only2): ...
переменное число позиционных: задаёт, что может быть передана произвольная последовательность позиционных аргументов (в дополнение к любым позиционным аргументам, уже принимаемым другими параметрами). Такой параметр можно определить, добавив перед его именем символ
*, например args в следующем примере:def func(*args, **kwargs): ...
переменное число именованных: задаёт, что может быть передано произвольное количество именованных аргументов (в дополнение к любым именованным аргументам, уже принимаемым другими параметрами). Такой параметр можно определить, добавив перед его именем символ
**, например kwargs в приведённом выше примере.
Параметры могут задавать как необязательные, так и обязательные аргументы, а также значения по умолчанию для некоторых необязательных аргументов.
См. также запись глоссария аргумент, вопрос ЧаВо о разнице между аргументами и параметрами, класс
inspect.Parameter, раздел Function definitions и PEP 362.- элемент пути¶
Одно расположение в пути импорта, которое поисковик на основе пути использует для поиска модулей для импорта.
- поисковик элемента пути¶
Поисковик, возвращаемый вызываемым объектом из
sys.path_hooks(то есть обработчиком элемента пути), который умеет находить модули для заданного элемента пути.См.
importlib.abc.PathEntryFinderдля методов, реализуемых поисковиками элементов пути.- обработчик элемента пути¶
Вызываемый объект из списка
sys.path_hooks, который возвращает поисковик элемента пути, если умеет находить модули в определённом элементе пути.- поисковик на основе пути¶
Один из стандартных поисковиков мета-пути, который выполняет поиск модулей в пути импорта.
- объект, подобный пути¶
Объект, представляющий путь в файловой системе. Объект, подобный пути, является либо объектом
strилиbytes, представляющим путь, либо объектом, реализующим протоколos.PathLike. Объект, поддерживающий протоколos.PathLike, можно преобразовать в путь файловой системы в виде объектаstrилиbytes, вызвав функциюos.fspath(). Чтобы гарантировать результат типаstrилиbytes, можно использовать соответственно функцииos.fsdecode()иos.fsencode(). Представлено в PEP 519.- PEP¶
«Предложение по улучшению Python» («Python Enhancement Proposal»). PEP — это проектный документ, предоставляющий информацию сообществу Python или описывающий новую возможность Python, его процессы или окружение. PEP должны содержать краткую техническую спецификацию и обоснование предлагаемых возможностей.
PEP предназначены быть основным механизмом предложения крупных новых возможностей, сбора отзывов сообщества по вопросам и документирования проектных решений, принятых при разработке Python. Автор PEP отвечает за достижение согласия в сообществе и документирование несогласных мнений.
Смотри PEP 1.
- часть¶
Набор файлов в одном каталоге (возможно, хранящихся в zip-файле), которые составляют пакет пространства имён, как определено в PEP 420.
- позиционный аргумент¶
Смотри аргумент.
- предварительный API¶
Предварительный API — это API, который был намеренно исключён из гарантий обратной совместимости стандартной библиотеки. Хотя серьёзные изменения таких интерфейсов не ожидаются, пока они имеют статус предварительных, обратно несовместимые изменения (вплоть до удаления интерфейса) могут быть внесены, если основные разработчики сочтут их необходимыми. Такие изменения не будут вноситься без веской причины — они произойдут только в случае обнаружения серьёзных фундаментальных недостатков, которые не были замечены до включения API.
Даже для предварительных API изменения, несовместимые с предыдущими версиями, рассматриваются как «крайнее средство» — всё равно будут предприняты все попытки найти обратно совместимое решение для любых выявленных проблем.
Этот процесс позволяет стандартной библиотеке продолжать развиваться с течением времени, не закрепляя проблемные ошибки проектирования на длительные периоды. См. подробности в PEP 411.
- предварительный пакет¶
Смотри предварительный API.
- Python 3000¶
Прозвище линейки выпусков Python 3.x (возникшее задолго до выхода версии 3, когда её выпуск был ещё далёкой перспективой). Также сокращается как «Py3k».
- идиоматичный для Python¶
Идея или фрагмент кода, которые точно соответствуют наиболее распространённым идиомам языка Python, а не реализуют код с использованием концепций, принятых в других языках. Например, распространённая идиома Python — перебор всех элементов итерируемого объекта с помощью инструкции
for. Во многих других языках такой конструкции нет, поэтому люди, незнакомые с Python, иногда вместо этого используют числовой счётчик:for i in range(len(food)): print(food[i])
В отличие от более чистого и идиоматичного для Python способа:
for piece in food: print(piece)
- квалифицированное имя¶
Имя с точками, показывающее «путь» от глобальной области видимости модуля к классу, функции или методу, определённым в этом модуле, как описано в PEP 3155. Для функций и классов верхнего уровня квалифицированное имя совпадает с именем объекта:
>>> class C: ... class D: ... def meth(self): ... pass ... >>> C.__qualname__ 'C' >>> C.D.__qualname__ 'C.D' >>> C.D.meth.__qualname__ 'C.D.meth'
При использовании применительно к модулям полное квалифицированное имя означает полный путь с точками к модулю, включая все родительские пакеты, например
email.mime.text:>>> import email.mime.text >>> email.mime.text.__name__ 'email.mime.text'
- счётчик ссылок¶
The number of references to an object. When the reference count of an object drops to zero, it is deallocated. Some objects are «immortal» and have reference counts that are never modified, and therefore the objects are never deallocated. Reference counting is generally not visible to Python code, but it is a key element of the CPython implementation. Programmers can call the
sys.getrefcount()function to return the reference count for a particular object.- обычный пакет¶
Традиционный пакет, например каталог, содержащий файл
__init__.py.См. также пакет пространства имён.
- __slots__¶
Объявление внутри класса, которое экономит память за счёт предварительного выделения места для атрибутов экземпляра и устранения словарей экземпляров. Несмотря на популярность, эта техника несколько сложна в правильном применении и лучше всего подходит для редких случаев, когда в приложении с критическими требованиями к памяти существует большое количество экземпляров.
- последовательность¶
Итерируемый объект, который поддерживает эффективный доступ к элементам с использованием целочисленных индексов через специальный метод
__getitem__()и определяет метод__len__(), возвращающий длину последовательности. Некоторые встроенные типы последовательностей:list,str,tupleиbytes. Обратите внимание, чтоdictтакже поддерживает__getitem__()и__len__(), но считается отображением, а не последовательностью, поскольку поиск выполняется с использованием произвольных хешируемых ключей, а не целых чисел.The
collections.abc.Sequenceabstract base class defines a much richer interface that goes beyond just__getitem__()and__len__(), addingcount(),index(),__contains__(), and__reversed__(). Types that implement this expanded interface can be registered explicitly usingregister(). For more documentation on sequence methods generally, see Common Sequence Operations.- включение множества¶
Компактный способ обработать все или часть элементов итерируемого объекта и вернуть множество с результатами.
results = {c for c in 'abracadabra' if c not in 'abc'}создаёт множество строк{'r', 'd'}. См. Displays for lists, sets and dictionaries.- одиночная диспетчеризация¶
Форма диспетчеризации обобщённой функции, при которой выбор реализации выполняется на основе типа одного аргумента.
- срез¶
An object usually containing a portion of a sequence. A slice is created using the subscript notation,
[]with colons between numbers when several are given, such as invariable_name[1:3:5]. The bracket (subscript) notation usessliceobjects internally.- слегка устаревший¶
API, объявленный слегка устаревшим, не следует использовать в новом коде, но его безопасно использовать в уже существующем коде. Такой API по-прежнему документируется и тестируется, но больше не будет развиваться.
Лёгкое устаревание, в отличие от обычного устаревания, не предусматривает удаления API и не приводит к выдаче предупреждений.
- специальный метод¶
Метод, который неявно вызывается Python для выполнения определённой операции над типом, например сложения. Такие методы имеют имена, начинающиеся и заканчивающиеся двойным подчёркиванием. Специальные методы описаны в Имена специальных методов.
- инструкция¶
Инструкция является частью набора инструкций («блока» кода). Инструкция представляет собой либо выражение, либо одну из конструкций с ключевым словом, таких как
if,whileилиfor.- статический анализатор типов¶
Внешний инструмент, который читает код Python и анализирует его, выявляя такие проблемы, как некорректные типы. См. также подсказки типов и модуль
typing.- сильная ссылка¶
В C API Python сильная ссылка — это ссылка на объект, которой владеет код, содержащий эту ссылку. Сильная ссылка приобретается вызовом функции
Py_INCREF()при создании ссылки и освобождается вызовом функцииPy_DECREF()при удалении ссылки.Функцию
Py_NewRef()можно использовать для создания сильной ссылки на объект. Обычно перед выходом из области действия сильной ссылки необходимо вызвать функциюPy_DECREF()для этой ссылки, чтобы избежать утечки одной ссылки.См. также заимствованная ссылка.
- кодировка текста¶
Строка в Python представляет собой последовательность кодовых точек Unicode (в диапазоне
U+0000–U+10FFFF). Чтобы сохранить или передать строку, её необходимо сериализовать в виде последовательности байтов.Сериализация строки в последовательность байтов называется «кодированием», а воссоздание строки из последовательности байтов называется «декодированием».
Существует множество различных кодеков сериализации текста, которые в совокупности называются «кодировками текста».
- текстовый файл¶
Файловый объект, способный читать и записывать объекты
str. Часто текстовый файл фактически обращается к байтовому потоку данных и автоматически обрабатывает кодировку текста. Примерами текстовых файлов являются файлы, открытые в текстовом режиме ('r'или'w'),sys.stdin,sys.stdoutи экземплярыio.StringIO.См. также двоичный файл — файловый объект, способный читать и записывать объекты, подобные bytes.
- токен¶
Небольшая единица исходного кода, создаваемая лексическим анализатором (также называемым токенизатором). Имена, числа, строки, операторы, символы новой строки и подобные элементы представлены в виде токенов.
Модуль
tokenizeпредоставляет доступ к лексическому анализатору Python. Модульtokenсодержит информацию о различных типах токенов.- строка в тройных кавычках¶
Строка, ограниченная тремя последовательными кавычками: либо двойными («), либо одинарными („). Хотя она не предоставляет никакой функциональности, недоступной для строк в одиночных кавычках, она полезна по нескольким причинам. Она позволяет включать в строку неэкранированные одинарные и двойные кавычки, а также может занимать несколько строк без использования символа продолжения, что делает её особенно полезной при написании строк документации.
- тип¶
Тип объекта Python определяет, к какому виду объектов он относится; каждый объект имеет тип. Тип объекта доступен через его атрибут
__class__или может быть получен с помощью функцииtype(obj).- псевдоним типа¶
Синоним типа, созданный путём присваивания типа идентификатору.
Псевдонимы типов полезны для упрощения подсказок типов. Например:
def remove_gray_shades( colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]: pass
можно сделать более читабельным следующим образом:
Color = tuple[int, int, int] def remove_gray_shades(colors: list[Color]) -> list[Color]: pass
- подсказка типа¶
Аннотация, указывающая ожидаемый тип переменной, атрибута класса, параметра функции или возвращаемого значения.
Подсказки типов являются необязательными и не проверяются Python, но полезны для статических анализаторов типов. Они также могут помогать IDE с автодополнением кода и рефакторингом.
Подсказки типов глобальных переменных, атрибутов классов и функций, но не локальных переменных, можно получить с помощью функции
typing.get_type_hints().- универсальные переводы строк¶
Способ интерпретации текстовых потоков, при котором все следующие последовательности распознаются как обозначающие конец строки: соглашение Unix о конце строки
'\n', соглашение Windows'\r\n'и старое соглашение Macintosh'\r'. См. PEP 278 и PEP 3116, а такжеbytes.splitlines()для дополнительного применения.- аннотация переменной¶
Аннотация переменной или атрибута класса.
При аннотировании переменной или атрибута класса присваивание является необязательным:
class C: field: 'annotation'
Аннотации переменных обычно используются для подсказок типов: например, ожидается, что эта переменная будет принимать значения типа
int:count: int = 0
Синтаксис аннотаций переменных описан в разделе Аннотированные инструкции присваивания.
См. аннотация функции, PEP 484 и PEP 526, которые описывают эту функциональность. См. также Annotations Best Practices для получения рекомендаций по работе с аннотациями.
- виртуальное окружение¶
Изолированная среда выполнения, которая позволяет пользователям и приложениям Python устанавливать и обновлять пакеты дистрибутива Python без влияния на поведение других приложений Python, работающих в той же системе.
См. также
venv.- виртуальная машина¶
Компьютер, полностью реализованный программным обеспечением. Виртуальная машина Python выполняет байт-код, созданный компилятором байт-кода.
- Дзен Python¶
Список принципов проектирования и философских положений Python, которые помогают понимать и использовать язык. Этот список можно получить, набрав «
import this» в интерактивной оболочке.