Глоссарий

>>>
Приглашение Python по умолчанию интерактивной оболочки. Часто для кода примеров, которые могут быть выполнены в интерактивном режиме в интерпретаторе.
...

Может означать:

  • Приглашение интерактивной оболочки Python по умолчанию при вводе код для блока кода с отступом, когда в паре совпадающих левых и правых разделителей (круглые скобки, квадратные скобки, фигурные скобки или тройные кавычки) или после указания декоратора.
  • Встроенная константа Ellipsis.
2to3

Инструмент, преобразующий Python 2.x код в Python 3.x код путём обработки большинства несовместимостей, которые могут быть обнаружены путем парсинга источника и обхода дерева синтаксического анализа.

2to3 доступен в стандартной библиотеке как lib2to3; в качестве Tools/scripts/2to3 предусмотрена автономная точка входа. См. 2to3 — автоматический перевод кода Python 2 в 3.

абстрактный базовый класс
Абстрактные базовые классы дополняют утиную типизацию, предоставляя способ определения интерфейсов, когда другие методы, такие, как hasattr(), будут неуклюжими или слегка неправильными (например, с магическими методами). ABC’ы ввести виртуальные подклассы, которые являющиеся классами и не наследуются от класса, но все ещё распознаются isinstance() и issubclass(); см. документацию по модулю abc. Python поставляется с множеством встроенных ABC’ов для структур данных (в модуле collections.abc), номеров (в модуле numbers), потоков (в модуле io), поисковиков и загрузчиков (в модуле importlib.abc). С помощью модуля ABC можно создать собственные abc.
аннотация

Этикетка связанная с переменной, атрибутом класса или параметром функции, или возвращаемом значении, используемый в соответствии с конвенцией подсказки типа.

К аннотациям локальных переменных нельзя получить доступ во времени выполнения, но аннотациях глобальных переменных, класса атрибуты, и функции сохранены в специальном атрибуте __annotations__ модулей, классов и функций, соответственно.

См. разделы аннотация переменной, аннотация функции, PEP 484 и PEP 526, в которых определяются функциональные возможности.

аргумент

При вызове функции значение передается функции (или методу). Существует два вида аргументов:

  • ключевой аргумент: аргумент, для которого предшествует идентификатор (например, name=) в вызове функции или переданные в виде словаря, с префиксом **. Например, 3 и 5 являются ключевыми аргументами в следующих вызовах complex():

    complex(real=3, imag=5)
    complex(**{'real': 3, 'imag': 5})
    
  • позиционный аргумент: аргумент, который не является ключевой аргументом. Позиционные аргументы могут появляться в начале списка аргументов и/или передаваться как элементы итерируемый, которому предшествует *. Например, 3 и 5 являются позиционными аргументами в следующих вызовах:

    complex(3, 5)
    complex(*(3, 5))
    

Аргументы назначаются именованным локальными переменными в теле функции. Регулирующие это назначение правила, см. в разделе Вызываемые. Синтаксически любое выражение может использоваться для представления аргумента; вычисляемый значение присваивается переменной локальная.

См. также раздел глоссария параметр, часто задаваемые вопросы по отличию между аргументами и параметрами и PEP 362.

асинхронный контекстный менеджер
Управляющий средой объект, отображаемой в async with оператор, определяя методы __aenter__() и __aexit__(). Представлен PEP 492.
асинхронный генератор

Функция, которая возвращает итератор асинхронного генератора. Она выглядит как функция корутина, определенная с помощью async def, за исключением того, что она содержит yield выражения для создания серии значений, пригодных для использования в цикле async for.

Обычно относится к функции асинхронного генератора, но может относиться к итератор асинхронного генератора в некоторых контекстах. В случаях, когда предполагаемое значение неясно, использование полных терминов позволяет избежать двусмысленности.

Асинхронная функция генератор может содержать выражения await, а также async for и операторы async with.

итератор асинхронного генератора

Объект, созданный функцией асинхронного генератора.

Это асинхронный итератор, возвращающий ожидаемый объект при вызове метода __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.
ожидаемый
Объект, который можно использовать в выражении await. Может быть корутиной или объектом с __await__() методом. См. также PEP 492.
BDFL
Великодушный пожизненный диктатор, a.k.a. Гвидо ван Россум, создатель Python.
двоичный файл

Файловый объект, умеющий читать и писать байтоподобные объекты. Примерами двоичных файлов являются файлы, открытые в двоичном режиме ('rb', 'wb' или 'rb+'), sys.stdin.buffer, sys.stdout.buffer и сущности io.BytesIO и gzip.GzipFile.

См. также раздел текстовый файл для файлового объекта, способного читать и записывать str объекты.

байтоподобный объект

Объект, поддерживающий Буферный протокол и способный экспортировать C-смежный буфер. Сюда входят все объекты bytes, bytearray и array.array, а также множество общих объектов memoryview. Байтоподобные объекты можно использовать для различных операций, работающих с двоичными данными; к ним относятся сжатие, сохранение в двоичный файл и передача через сокет.

Для некоторых операций необходимо, чтобы двоичные данные были изменяемыми. В документации эти объекты часто упоминаются как «объекты, похожие на байты чтения-записи». Примеры изменяемых буферных объектов включают в себя bytearray и memoryview bytearray. Другие операции требуют сохранения двоичных данных в неизменяемых объектах («байтоподобных объектах только для чтения»); Примеры этого включают в себя bytes и memoryview объекта bytes.

байт-код

Python исходный код компилируется в байт-код, внутреннее представление Python программы в CPython интерпретаторе. Байт-код также кэшируется в .pyc файлах, так что выполнение того же файла происходит быстрее во второй раз (можно избежать повторной компиляции из источника в байт-коде). Говорят, что этот «промежуточный язык» выполняется в виртуальной машине, который выполняет машинный код, соответствующий каждому байт-коду. Обратите внимание, что не ожидается, что байт-коды будут работать между различными Python виртуальными машинами и не будут стабильными между Python выпусками.

Список операторов байт-кода можно найти в документации для модуля dis.

колбэк
Функция подпрограммы, которая передается в качестве аргумента для выполнения в будущем.
класс
Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.
переменная класса
Переменная, определенная в классе и предназначенная для изменения только на уровне класса (т. е. не в сущности класса).
приведение
Неявное преобразование экземпляра одного типа в другой во время операция, которая включает два аргумента одного типа. Например, int(3.15) преобразует число с плавающей запятой в целое число 3, но в 3+4.5 каждый аргумент имеет различный тип (один int, один float), и оба они должны быть преобразованы в один и тот же тип, прежде чем их можно будет добавить, или это вызовет TypeError. Без принуждения все аргументы даже совместимых типов должны быть нормализованы к одному и тому же значению программистом, например, float(3)+4.5, а не просто 3+4.5.
комплексное число
Расширение знакомой системы действительных чисел, в которой все числа выражены как сумма вещественной и мнимой части. Мнимые числа — вещественные кратные мнимой единице (квадратный корень из -1), часто записанные i в математике или j в инженерии. Python имеет встроенную поддержку комплексных чисел, которые записываются с этой последней нотацией; мнимая часть пишется суффиксом j, например, 3+1j. Для получения доступа к сложным эквивалентам модуля math используйте cmath. Использование комплексных чисел является достаточно продвинутой математической особенностью. Если вы не знаете о необходимости в них, это почти наверняка вы можете спокойно игнорировать их.
контекстный менеджер
Управляющий средой объект, видимый внутри оператора with, определяя методы __enter__() и __exit__(). Смотрите PEP 343.
контекстная переменная
Переменная, которая может иметь различные значения в зависимости от её контекста. Она аналогична потоковому локальному хранилищу, в котором каждый поток выполнения может иметь разные значение для переменной. Однако с переменными контекста может быть несколько контекстов в одном потоке выполнения и основное использование переменных контекста - отслеживать переменные в параллельных асинхронных задачах. См. contextvars.
смежность

Буфер считается смежным, если он C-смежный или Fortran смежный. Нулевые буферы являются C и Fortran смежными. В одномерных массивах элементы должны размещаться в памяти рядом друг с другом в порядке увеличения индексов, начиная с нуля. В многомерных С-смежных массивах последний индекс изменяется быстрее всего при посещении элементов в порядке адреса памяти. Однако в смежных массивах Fortran первый индекс изменяется быстрее всего.

корутина
Корутины — более обобщённая форма подпрограмм. Вход в корутины осуществляется в одной точке и выход в другой точке. В корутины можно входить, выходить и возобновлять в различных точках. Они могут быть реализованы с помощью оператора async def. См. также PEP 492.
функция корутина
Функция, возвращающая объект корутины. Функция корутина может быть определена с помощью оператора async def и может содержать ключевые слова await, async for и async with. Они были представлены PEP 492.
CPython
Каноническая реализация языка программирования Python, распространяемого на официальном сайте Python. Используется «CPython» термин, когда необходимо отличить эту реализацию от других, таких как Jython или IronPython.
декоратор

Функция, возвращающая другую функцию, обычно применяемую как преобразование функции с использованием синтаксиса @wrapper. Типичными примерами для декораторов являются classmethod() и staticmethod().

Синтаксис декоратора является просто синтаксическим сахаром, следующие два определения функций семантически эквивалентны:

def f(...):
    ...
f = staticmethod(f)

@staticmethod
def f(...):
    ...

Такое же понятие существует для классов, но реже там используется. Дополнительные сведения о декораторах см. в документации по определению функций и определения классов.

дескриптор

Любой объект, определяющий методы __get__(), __set__() или __delete__(). Когда атрибут класса является дескриптором, запускается особое поведение привязки при поиске атрибута. Обычно с помощью a.b для получения, установки или удаления атрибута выполняется поиск объекта с именем b в словаре классов для a, но если b является дескриптором, вызывается соответствующий метод дескриптора. Понимание дескрипторов является ключом к глубокому пониманию Python, поскольку они являются основой для многих функций, включая функции, методы, свойства, методы классов, статические методы и ссылки на super классы.

Дополнительные сведения о методах дескрипторов см. в разделе Реализация дескрипторов.

словарь
Ассоциативный массив, где произвольные ключи сопоставляются со значениями. Ключами могут быть любые объекты с __hash__() и __eq__() методами. Называется хешем в Perl.
словарное включение
Компактный способ обработки всех или части элементов в итераторе и возврата словаря с результатами. results = {n: n ** 2 for n in range(10)} генерирует словарь, содержащий ключ n, сопоставленный со значением n ** 2. См. Отображение списков, наборов и словарей.
представление словаря
Объекты, возвращенный из dict.keys(), dict.values() и dict.items(), называются представлениями словарей. Они обеспечивают динамическое представление элементов словаря, что означает, что при изменении словаря эти изменения отражаются. Для преобразования представления словаря в полный список используйте list(dictview). Смотрите Объекты представления словаря.
докстринг
Строковый литерал который появляется как первое выражение в классе, функции или модуле. При выполнении пакета он распознается компилятором и помещается в __doc__ атрибуте класса, функции или модуля. Так как он доступен через самоанализ, он является каноническим местом для документирования объекта.
утиная типизация
Стиль программирования, который не смотрит на тип объекта, для определения, есть ли у него правильный интерфейс; вместо этого метод или атрибут просто вызывается или используется («Если он выглядит как утка и крякает как утка, это должна быть утка»). Акцентируя внимание на интерфейсах, а не на типах, хорошо продуманный код улучшает свою гибкость, позволяя полиморфную замену. Утиная типизация позволяет избежать тестов с использованием type() или isinstance(). (Однако следует отметить, что утиная типизация может дополняться абстрактными базовыми классами.) Вместо этого обычно используются hasattr() проверки или EAFP программирование.
EAFP
Проще просить прощения, чем разрешения (EAFP). Общий стиль кодирования Python предполагает наличие допустимых ключей или атрибутов и перехватывает исключения, если предположение оказывается ложным. Это чистый и быстрый стиль характеризуется наличием множества операторов try и except. Техника контрастирует с LBYL стилем, общим для многих других языков, таких как C.
выражение
Часть синтаксиса, которое может быть вычислено как некоторое значение. Другими словами, выражение — это совокупность элементов выражения, таких как литералы, имена, доступ к атрибутам, операторы или вызовы функций, которые все возвращают значение. В отличие от многих других языков, не все языковые конструкции являются выражениями. Существуют также операторы, которые нельзя использовать как выражения, например while. Присвоения также являются операторами, а не выражениями.
модуль расширения
Модуль, написанный на C или C++, использующий C API Python’а для взаимодействия с ядром и с пользовательским кодом.
f-строка
Строковые литералы с префиксом 'f' или 'F' обычно называются «f-строки», что сокращённо от форматированные строковые литералы. См. также PEP 498.
файловый объект

Объект, предоставляющий файлоориентированный API (с методами, такими как read() или write()) базовому ресурсу. В зависимости от способа его создания файлового объекта может опосредовать доступ к реальному дисковому файлу или к другому типу хранилища или устройства связи (например, стандартный ввод/вывод, буферы в памяти, сокеты, пайпы и т. д.). Файловые объекты также называются файловые объекты или потоки.

На самом деле существует три категории файловых объектов: сырые двоичные файлы, буферизированные двоичные файлы и текстовые файлы. Их интерфейсы определены в модуле io. Каноническим способом создания файлового объекта является использование функции open().

файлоподобный объект
Синоним для файловый объект.
поисковик

Объект, который пытается найти загрузчик для импортируемого модуля.

Начиная со Python 3.3 существует два типа поисковиков: поисковики мета путей для использования с sys.meta_path, и поисковики путей входа для использования с sys.path_hooks.

Подробнее смотрите в разделах PEP 302, PEP 420 и PEP 451.

целочисленное деление
Математическое деление, округленное до ближайшего целого числа. Оператор целочисленного деления - //. Например, выражение 11 // 4 вычисляет 2 в отличие от 2.75 возвращенное истинным float делением. Обратите внимание, что (-11) // 4 будет -3, потому что это -2.75 округляется вниз. Смотрите PEP 238.
функция
Серия операторов, возвращая некоторые значение вызывающему. Ей также может быть передано ноль или более аргументов что может быть использоваться при выполнении тела. См. также раздел параметр, метод и Определения функции.
аннотация функции

Аннотация параметра функции или возвращаемого значения.

Аннотации функций обычно используются для подсказок типа: например функция должна принимать два int аргумента, а также должна вернуть int значение:

def sum_two_numbers(a: int, b: int) -> int:
   return a + b

Синтаксис аннотации функции описан в разделе Определения функции.

См. разделы аннотация переменной и PEP 484, в которых определяются функциональные возможности.

__future__

Псевдомодуль, который программисты могут использовать для включения новых языковых функций, несовместимых с текущим интерпретатором.

Импортировав модуль __future__ и вычислив его переменные, можно увидеть, когда новый элемент был впервые добавлен в язык и когда он становится элементом по умолчанию:

>>> import __future__
>>> __future__.division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
сборка мусора
Процесс освобождения памяти, когда она больше не используется. Python выполняет сборку мусора посредством подсчета ссылок и циклического сборщика мусора, который способен обнаруживать и прерывать циклические ссылки. Сборщиком мусора можно управлять с помощью модуля gc.
генератор

Функция, которая возвращает генератор итератор. Она выглядит как обычная функция, за исключением того, что она содержит yield выражения для создания серии значения, пригодных для использования в цикле for, или которые могут быть извлечены по одному функцией next().

Обычно относится к функции генератора, но может относиться к генератор итератору в некоторых контекстах. В случаях, когда предполагаемое значение не ясно, использование полных терминов позволяет избежать двусмысленности.

генератор итератор

Объект, созданный генератор функцией.

Каждое yield временно приостанавливает обработку, запоминая состояние выполнения местоположения (включая локальные переменные и ожидающий оператор try). Когда генератор итератор возобновляет работу, он возобновляет работу с того места, где остановился (в отличие от функций, которые запускаются заново при каждом вызове).

генератор выражение

Выражение, которое возвращается итератором. Оно выглядит как нормальное выражение, за которым следует for клаузула, определяющий переменную цикла, диапазон и необязательный if клаузула. Комбинированное выражение создает значения для охватывающей функции:

>>> sum(i*i for i in range(10))         # сумма последовательности 0, 1, 4, ... 81
285
общая функция

Функция, состоящая из нескольких функций, реализующих одну и ту же операцию для различных типов. Какая реализация должна использоваться во время вызова, определяемого алгоритмом диспетчеризации.

См. также глоссарий одиночная диспетчеризация, декоратор functools.singledispatch() и PEP 443.

GIL
См. глобальная блокировка интерпретатора.
глобальная блокировка интерпретатора

Используемый механизм CPython интерпретатора, чтобы гарантировать, что только один поток выполняет Python байт-код за один раз. Это упрощает реализацию CPython, создавая объектную модель (включая критические встроенные типы dict) неявно защищая от параллельного доступа. Блокировка всего интерпретатора облегчает многопоточность интерпретатора за счёт большей части параллелизма, обеспечиваемого многопроцессорными машинами.

Однако некоторые модули расширения, стандартные или сторонние, предназначены для освобождения GIL при выполнении ресурсоёмких задач, таких как сжатие или хеширование. Кроме того, GIL всегда освобождается при выполнении I/O.

Прошлые попытки создать «свободнопотоковый» интерпретатор (который блокирует общие данные с гораздо более высокой степенью детализации) не увенчались успехом, поскольку пострадала производительность в общем случае с одним процессором. Считается, что преодоление этой проблемы с производительностью значительно усложнит реализацию и, следовательно, повысит стоимость обслуживания.

pyc на основе хеша
Файл кэша байт-кода, который использует хэш, а не время последнего изменения соответствующего исходного файла для определения его достоверности. См. Инвалидация кэша байткода.
хэшируемый

Объект хэшируемый, если он имеет хеш значение, которое никогда не изменяется в течение его жизни (ему нужен метод __hash__()), и его можно сравнить с другими объектами (ему нужен метод __eq__()). Хешируемые объекты, у которых сравнения равны, должны иметь одинаковые хеш значения.

Хэшируемость делает объект пригодным для использования в качестве словарного ключа и элемента множества, поскольку эти структуры данных используют хэш значения внутри.

Большинство Python неизменяемых встроенных объектов являются хешируемыми; изменяемые контейнеры (например, списки или словари) не являются; неизменяемые контейнеры (кортежи и замороженные множества) являются хэшируемыми только в том случае, если их элементы являются хэшируемыми. Объекты, которые являются сущностями определяемых пользователем классов, по умолчанию доступны для хэширования. Сравнивания всегда неравные (кроме себя), и хеш значения выводится из их id().

IDLE
Интегрированная среда разработки для Python. IDLE - это базовая среда редактора и интерпретатора, которая поставляется со стандартным дистрибутивом Python.
неизменный
Объект с фиксированным значением. Неизменяемые объекты включают числа, строки и кортежи. Такой объект не может быть изменен. Если необходимо сохранить другое значение, необходимо создать новый объект. Они играют важную роль в местах, где необходим постоянное хеш значение, например, как ключ в словаре.
путь импорта
Список расположений (или пути входа), найденный поисковик на основе пути для импортируемых модулей. Во время импорта этот список расположений обычно поступает из sys.path, но для подпакетов он также может поступать из __path__ атрибута родительского пакета.
импортирующий
Процесс, с помощью которого Python код в одном модуле становится доступным для Python кода в другом модуле.
импортер
Объект, который одновременно находит и загружает модуль; и поисковик, и загрузчик объекта.
интерактивный
Python содержит интерактивный интерпретатор, который означает, что вы можете ввести операторы и выражения в приглашение интерпретатора, немедленно выполнить их и увидеть их результаты. Просто запустите python без аргументов (возможно, выбрав его в главном меню компьютера). Это очень мощный способ тестирования новых идей или проверки модулей и пакетов (запомните help(x)).
интерпретированный
Python является интерпретируемым языком, в отличие от компилированных, хотя различие может быть размытым из-за присутствия компилятора байт-кода. Это означает, что исходные файлы можно запускать напрямую без явного создания исполняемого файла, который затем запускается. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя их программы обычно также работают медленнее. См. также интерактивный.
выключение интерпретатора

При запросе на отключение интерпретатора Python переходит в специальную фазу, где он постепенно высвобождает все аллоцированные ресурсы, например, модули и различные критические внутренние структуры. Он также выполняет несколько вызовов в сборщике мусора. Это может инициировать выполнение кода в определяемых пользователем деструкторах или колбэках слабых ссылок. Код, выполняемый на этапе завершения работы, может столкнуться с различными исключениями, поскольку ресурсы, на которые он опирается, могут больше не функционировать (типичными примерами являются библиотечные модули или механизм предупреждений).

Основной причиной завершения работы интерпретатора является завершение выполнения модуля __main__ или выполняемого сценария.

итерируемый

Возвращающий свои элементы по одному объект. Примеры итерируемых включают все типы последовательности (например, list, str и tuple) и некоторые непоследовательные типы, как dict, файловые объекты и объекты любых классов, которые вы определяете с методом __iter__() или с методом __getitem__(), реализующие семантику последовательности.

Итерируемые можно использовать в цикле for и во многих других местах, где необходима последовательность (zip(), map(),…). Когда итеративный объект передается в качестве аргумента встроенной функции iter(), он возвращает итератором для объекта. Этот итератор хорош для одного прохода над набором значений. При использовании итерируемых, как правило, нет необходимости вызывать iter() или иметь дело с объектами итератора самостоятельно. for оператор делает это автоматически, создавая временную неназванную переменную для сохранения итератора в течение всего цикла. См. также итератор, последовательность и генератор.

итератор

Объект, представляющий поток данных. Повторные вызовы метода __next__() итератора (или передача его встроенной функции next()) возвращает последовательные элементы в потоке. Если больше нет доступных данных, вместо этого создается исключение StopIteration. В этот момент когда объект итератора исчерпан, и любые дальнейшие вызовы метода __next__() просто вызвать StopIteration. Итераторы должны иметь метод __iter__(), который возвращает сам объект итератора, поэтому каждый итератор также является итерируемым и может быть использоваться в большинстве мест, где принимаются другие итерируемые. Одним из примечательных исключений является код, который пытается пройти несколько итераций. Объект- контейнер (например, list) создаёт новый итератор каждый раз при передаче его функции iter() или использовании в цикле for. Попытка этого с помощью итератора приведет к возвращению того же исчерпанного объекта итератора, используемый в предыдущем прохождении итерации, что делает его пустым контейнером.

Более подробную информацию можно найти в Типы итераторов.

ключевая функция

Ключевая функция или функция сортировки - это вызываемая функция, которая возвращает значение используемое для сортировки или упорядочения. Например, locale.strxfrm() используется для создания ключа сортировки, учитывающую локаль соглашения о сортировке.

Ряд инструментов в Python принимают ключевые функции для управления упорядочением или группировкой элементов. К ним относятся min(), max(), sorted(), list.sort(), heapq.merge(), heapq.nsmallest(), heapq.nlargest() и itertools.groupby().

Существует несколько способов создания ключевой функции. Например. Метод str.lower() может служить ключевой функцией для нечувствительных к регистру сортировок. Альтернативно, ключевая функция может быть построена из lambda выражения, такого как lambda r: (r[0], r[2]). Кроме того, модуль operator предоставляет три ключевых конструктора функций: attrgetter(), itemgetter() и methodcaller(). Примеры создания и использования ключевых функций см. в HOWTO по сортировке.

ключевой аргумент
См. аргумент.
лямбда
Анонимная встроенная функция, состоящая из одного выражения, которая вычисляется при вызове функции. Для создания лямбда-функции используется синтаксис lambda [parameters]: expression.
LBYL

Не зная броду, не суйся в воду. Этот стиль кодирования явно проверяет предварительные условия перед выполнением вызовов или поисков. Этот стиль контрастирует с EAFP подходом и характеризуется наличием множества if операторов.

В многопоточной среде подход LBYL может привести к риску введения условия гонки между «смотрящим» и «скачущим». Например, код, if key in mapping: return mapping[key] может завершиться ошибкой, если другой поток удалит key из mapping после теста, но до поиска. Эту проблему можно решить с помощью блокировок или с помощью подхода EAFP.

список
Встроенная Python последовательность. Несмотря на свое название, он больше похож на массив на других языках, чем на связанный список, поскольку доступ к элементам равен O(1).
списковое включение
Компактный способ обработки всех или части элементов в последовательности и возвращает списка с результатами. result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] генерирует список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. if клаузула является необязательной. Если этот параметр пропущен, обрабатываются все элементы в range(256). На английском «list comprehension» термин.
загрузчик
Объект, загружающий модуль. Он должен определить метод с именем load_module(). Загрузчик обычно возвращается поисковиком. Подробные сведения и PEP 302 importlib.abc.Loader см. в разделе абстрактный базовый класс.
магический метод

Неформальный синоним специального метода.

отображение
Объект-контейнер, поддерживающий произвольный поиск ключей и реализующий методы, указанные в Mapping или MutableMapping abstract base classes. Примеры включают в себя dict, collections.defaultdict, collections.OrderedDict и collections.Counter.
поисковик мета-пути

Поисковик, возвращенный поиском sys.meta_path. Мета-пути связаны с ним, но отличаются от поисковиков путей входа.

Смотрите importlib.abc.MetaPathFinder, чтобы узнать о методах, которые реализуют средства поиска мета-пути.

метакласс

Класс класса. Определения классов создают имя класса, словарь классов и список базовых классов. За эти три аргумента и создание класса отвечает метакласс. Большинство объектно-ориентированных языков программирования обеспечивают реализацию по умолчанию. Что делает Python особенным, так это возможность создания пользовательских метаклассов. Большинству пользователей этот инструмент никогда не нужен, но при необходимости метаклассы могут предоставить мощные, элегантные решения. Они были использованы для логирования атрибута доступа, добавления потокобезопасности, отслеживания создания объектов, реализации одиночных задач и многих других задач.

Более подробную информацию можно найти в Метаклассы.

метод
Функция, которая определена внутри тела класса. При вызове в качестве атрибута сущности этого класса, метод получает сущность объекта в качестве своего первого аргумента (который обычно называется self). Смотрите функция и вложенная область видимости.
порядок разрешения метода
Порядок разрешения методов - это порядок, в котором базовые классы ищут элемент во время поиска. Подробные сведения об алгоритме, Порядок разрешения методов Python 2.3 используемый в Python начиная с версии 2.3, см. в разделе интерпретатора.
модуль

Объект, служащий организационной единицей Python кода. Модули имеют пространство имен, содержащее произвольные объекты Python. Модули загружаются в Python импортирующим процессом.

Смотрите также пакет.

спецификация модуля
Пространство имен, содержащее информацию, связанную с импортом, используемое для загрузки модуля. Сущность importlib.machinery.ModuleSpec.
MRO
См. порядок разрешения метода.
изменчивый
Изменяемые объекты могут изменять значение, но сохранять id(). См. также неизменный.
именованный кортеж

Термин «именованный кортеж» применяется к любому типу или классу, который наследует от кортежа и чьи индексируемые элементы также доступны с помощью именованных атрибутов. Тип или класс также могут иметь другие возможности.

Несколько встроенных типов именованных кортежей, включая возвращаемые значения 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 и определяет именованные поля. Такой класс может быть написан вручную или создан с помощью функции фабрики collections.namedtuple(). Последний метод также добавляет некоторые дополнительные методы, которые не могут быть найдены в написанных вручную или встроенных именованных кортежах.

пространство имен
Место хранения переменной. Пространства имён реализованы как словари. Существуют локальные, глобальные и встроенные пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён поддерживают модульность, предотвращая конфликты имён. Например, функции builtins.open и os.open() отличаются пространствами имён. Пространства имён также обеспечивают удобочитаемость и поддерживаемость, давая понять, какой модуль реализует функцию. Например, написание random.seed() или itertools.islice() даёт понять, что эти функции реализуются модулями random и itertools соответственно.
пакет пространства имен

PEP 420. Пакет — контейнер для вложенных пакетов. Пакеты пространства имён могут не иметь физического представления и, в частности, не похожи на обычный пакет, поскольку не имеют __init__.py файла.

См. также модуль.

вложенная область видимости
Возможность ссылаться на переменную во вложенном определении. Например, функция, определенная внутри другой функции, может ссылаться на переменные во внешней функции. Обратите внимание, что вложенные области видимости по умолчанию работают только для ссылок, а не для присвоения. Локальные переменные как считываются, так и записываются в самой внутренней области видимости. Аналогично, глобальные переменные считываются и записываются в глобальное пространство имен. nonlocal позволяет записывать во внешнюю область видимости.
класс нового стиля
Старое название разновидности классов теперь используется для всех объектов класса. В ранних версиях Python только классы нового стиля могли использовать более новые, универсальные функции Python’а как __slots__, дескрипторы, свойства, __getattribute__(), методы класса и статические методы.
объект
Любые данные с состоянием (атрибуты или значения) и определенным поведением (методами). Также конечный базовый класс любого класса нового стиля.
пакет

Python модуль, содержащий подмодули или вложенные подпакеты. Технически пакет представляет собой Python модуль с __path__ атрибутом.

См. также обычный пакет и пакет пространства имен.

параметр

Именованный элемент в определении функции (или метода), определяющем аргумент (или в некоторых случаях аргументы), который может принять функция. Существует пять видов параметров:

  • positional-or-keyword: указывает аргумент, который может передаваться либо позиционно, либо как ключевой аргумент. Это тип параметра по умолчанию, например foo и bar ниже:

    def func(foo, bar=None): ...
    
  • positional-only: указывает аргумент, который может быть предоставлен только по положению. Только позиционные параметры могут быть определены путем включения / символа в список параметров определения функции после них, например posonly1 и posonly2 в следующем:

    def func(posonly1, posonly2, /, positional_or_keyword): ...
    
  • keyword-only: указывает аргумент, который может быть предоставлен только ключевым. Параметры, предназначенные только для ключевых слов, могут быть определены путем включения одного параметра var-positional или голого * в списке параметров определения функции перед ними, например kw_only1 и kw_only2 в следующем:

    def func(arg, *, kw_only1, kw_only2): ...
    
  • var-positional: указывает, что может быть предоставлена произвольная последовательность позиционных аргументов (в дополнение к любым позиционным аргументам, уже принятым другими параметрами). Такой параметр может быть определен путем добавления имени параметра к *, например args следующим образом:

    def func(*args, **kwargs): ...
    
  • var-keyword: указывает, что может быть предоставлено произвольно много ключевых аргументов (в дополнение к любым ключевой аргументам, уже принятым другими параметрами). Такой параметр может быть определен путем добавления к имени параметра **, например kwargs в приведенном выше примере.

Параметры могут указывать как необязательные, так и обязательные аргументы, а также значения по умолчанию для некоторых необязательных аргументов.

См. также раздел глоссария аргумент, часто задаваемые вопросы по разнице между аргументами и параметрами, классу inspect.Parameter, разделу Определения функции и PEP 362.

путь входа
Единственное расположение в пути импорта, к которым поисковик на основе пути обращается для поиска модулей для импорта.
поисковик пути входа

Поисковик, возвращенный вызываемыми sys.path_hooks (т.е. хук пути входа), который знает, как найти предоставленные путём входа модули.

Методы, реализуемые поисковиками ввода пути, см. в разделе importlib.abc.PathEntryFinder.

хук пути входа
Вызываемый объект в списке sys.path_hook, который возвращает поисковик пути входа, если он знает, как найти модули в определенном пути входа.
поисковик на основе пути
Один из поисковиков мета-пути по умолчанию, который выполняет поиск модулей в пути импорта.
путеподобный объект
Объект, представляющий путь к файловой системе. Путеподобный объект является либо str или bytes объектом, представляющим путь, либо объектом, реализующим протокол os.PathLike. Объект, поддерживающий протокол os.PathLike, может быть преобразован в путь файловой системы str или bytes путем вызова функции os.fspath(); os.fsdecode() и os.fsencode() может использоваться, чтобы гарантировать результат str или bytes вместо этого, соответственно. Представлен в PEP 519.
PEP

Предложение по усовершенствованию Python. 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 заключается в циклической обработке всех итерируемых элементов с помощью оператора for. Многие другие языки не имеют такого типа конструкции, поэтому люди, незнакомые с Python, иногда используют вместо этого числовой счетчик:

for i in range(len(food)):
    print(food[i])

В отличие от чистого, Питонического метода:

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'
счетчик ссылок
Число ссылок на объект. Когда количество ссылок на объект падает до нуля, он освобождается. Подсчет ссылок обычно не виден для Python кода, но он является ключевым элементом реализации CPython. Модуль sys определяет функцию getrefcount(), которую программисты могут вызвать для возвращения количества ссылок на объект.
обычный пакет

Традиционный пакет, например каталог, содержащий файл __init__.py.

См. также пакет пространства имен.

__slots__
Объявление внутри класса, которое экономит память путем предварительного объявления пространства для атрибутов экземпляра и исключения словарей экземпляра. Несмотря на то, что этот метод популярен, его довольно сложно реализовать, и его лучше всего использовать в редких случаях, когда в приложении, критичном к памяти, имеется большое количество экземпляров.
последовательность

Итерируемый объект, поддерживающий эффективный доступ к элементу с использованием целочисленных индексов с помощью специального метода __getitem__() и определяющее метод __len__(), который возвращает длину последовательности. Некоторые встроенные типы последовательности: list, str, tuple и bytes. Обратите внимание, что dict также поддерживает __getitem__() и __len__(), но считается отображением, а не последовательностью, поскольку при поиске используются произвольные ключи неизменны, а не целые числа.

Абстрактный базовый класс collections.abc.Sequence определяет гораздо более богатый интерфейс, который выходит за рамки просто __getitem__() и __len__(), добавляя count(), index(), __contains__() и __reversed__(). Типы, реализующие этот расширенный интерфейс, могут быть зарегистрированы явно с помощью register().

включение множества
Компактный способ обработки всех или части элементов в итераторе и возврата множества с результатами. results = {c for c in 'abracadabra' if c not in 'abc'} генерирует множество строк {'r', 'd'}. См. Отображение списков, наборов и словарей.
одиночная диспетчеризация
Форма общей функции, в которой реализация выбирается на основе типа одного аргумента.
слайс
Объект, обычно содержащий часть последовательности. Слайс создается с помощью обозначения нижнего индекса, [] двоеточием между числами, если задано несколько, например, в variable_name[1:3:5]. Обозначение скобки (нижний индекс) используют slice объекты внутри.
специальный метод

Метод, который вызывается неявно с помощью Python для выполнения определенной операции над типом, например сложения. Такие методы имеют имена, начинающиеся и заканчивающиеся двойными подчеркиваниями. Специальные методы задокументированы в Имена специальных методов.

оператор
Оператор является частью серии («блок» кода). Оператор представляет собой либо выражение, либо одну из нескольких конструкций с ключевым словом, таких как if, while или for.
кодировка текста
Кодек, который кодирует Юникод строки в байты.
текстовый файл

Файловый объект, способный читать и записывать str объекты. Часто текстовый файл фактически обращается к байтоориентированному потоку данных и обрабатывает кодировку текста автоматически. Примерами текстовых файлов являются файлы, открытые в текстовом режиме ('r' или 'w'), sys.stdin, sys.stdout и сущности io.StringIO.

См. также раздел двоичный файл для файлового объекта, способного читать и записывать байтоподобные объекты.

строка в тройных кавычках
Строка, которая ограничена тремя экземплярами кавычек («) или апострофа („). Хотя они не предоставляют каких-либо функций, недоступных для строк в одинарных кавычках, они полезны по ряду причин. Они позволяют включать в строку одинарные и двойные кавычки без экранирования, и они могут занимать несколько строк без использования символа продолжения, что делает их особенно полезными при написании строк документации.
тип
Тип объекта Python определяет, что это за объект; у каждого объекта есть тип. Тип объекта доступен в качестве __class__ атрибута или может быть получен с помощью type(obj).
псевдоним типа

Синоним типа, созданный путем назначения типа идентификатору.

Псевдонимы типов полезны для упрощения подсказок типов. Например:

from typing import List, Tuple

def remove_gray_shades(
        colors: List[Tuple[int, int, int]]) -> List[Tuple[int, int, int]]:
    pass

можно сделать его более читаемым:

from typing import List, Tuple

Color = Tuple[int, int, int]

def remove_gray_shades(colors: List[Color]) -> List[Color]:
    pass

См. разделы typing и PEP 484, в которых рассказывается о функциональных возможностях.

подсказка типа

Аннотация, указывающая ожидаемый тип переменной, атрибута класса или параметра функции или возвращаемого значения.

Подсказки типов являются необязательными и не применяются Python, но они полезны для инструментов статического анализа типов и помогают интегрированным средам разработки выполнять завершение кода и рефакторинг.

Подсказки типов глобальных переменных, атрибуты классов и функций, но не локальных переменных, можно получить с помощью typing.get_type_hints().

См. разделы typing и PEP 484, в которых рассказывается о функциональных возможностях.

универсальный символ новой строки
Способ интерпретации текстовых потоков, в котором все следующее распознается как завершение строки: конвенция '\n' конца строки Unix, конвенция '\r\n' Windows и старая конвенция '\r' Макинтоша. Дополнительные сведения см. в разделах PEP 278 и PEP 3116, а также bytes.splitlines().
аннотация переменной

Аннотация переменной или атрибута класса.

При аннотировании переменной или атрибута класса присвоение является необязательным:

class C:
    field: 'annotation'

Аннотации переменных обычно используется для подсказок типов: например, переменная должна принимать значение int

count: int = 0

Синтаксис аннотации переменной описан в разделе Аннотированные операторы присваивания.

См. разделы аннотация функции, PEP 484 и PEP 526, в которых рассказано о функциональных возможностях.

виртуальная среда

Кооперативно изолированная среда выполнения, которая позволяет пользователям и приложениям Python устанавливать и обновлять пакеты распространения Python, не вмешиваясь в поведение других приложений Python, работающих в той же системе.

См. также venv.

виртуальная машина
Компьютер, полностью определённый программным обеспечением. Виртуальная машина Python выполняет байт-код, предоставленный компилятором байт-кода.
Дзен Python
Перечисление Python принципов и философий проектирования, которые помогают в понимании и использовании языка. Список можно найти, введя «import this» в интерактивном приглашении.