Spec-Zone.ru › Python 3.9

Глоссарий

>>>

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

...

Может относиться к:

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

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

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

abstract base class

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

annotation

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

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

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

argument

Значение, переданное функции (или методу) при вызове функции. Есть два вида аргументов:

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

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

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

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

См. также запись в глоссарии параметр, вопрос в FAQ о разнице между аргументами и параметрами и PEP 362.

asynchronous context manager

Объект, который управляет средой, отображаемой в инструкции async with, определяя методы __aenter__() и __aexit__(). Введено в PEP 492.

asynchronous generator

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

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

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

asynchronous generator iterator

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

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

Каждое yield временно приостанавливает обработку, запоминая состояние выполнения (включая локальные переменные и ожидающие операторы try). Когда _итератор асинхронного генератора_ фактически возобновляется с помощью другого ожидаемого объекта, возвращаемого __anext__(), он продолжает с того места, где остановился. См. PEP 492 и PEP 525.

asynchronous iterable

Объект, который может быть использован в инструкции async for. Должен возвращать асинхронный итератор из своего метода __aiter__(). Введено в PEP 492.

asynchronous iterator

Объект, реализующий методы __aiter__() и __anext__(). __anext__ должен возвращать объект awaitable. async for разрешает объекты awaitables, возвращаемые методом асинхронного итератора __anext__(), до тех пор, пока не будет поднято исключение StopAsyncIteration. Введено в PEP 492.

attribute

Значение, связанное с объектом, к которому обращаются по имени с использованием точечных выражений. Например, если у объекта o есть атрибут a, то к нему обращаются как o.a.

awaitable

Объект, который может быть использован в выражении await. Может быть корутиной или объектом с методом __await__(). См. также PEP 492.

BDFL

Благожелательный диктатор на всю жизнь, а.к.а. Guido van Rossum, создатель Python.

binary file

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

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

bytes-like object

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

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

bytecode

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

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

callback

Функция подпрограммы, которая передаётся в качестве аргумента для выполнения в какой-то момент в будущем.

class

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

class variable

Переменная, определённая в классе и предназначенная для изменения только на уровне класса (т.е. не в экземпляре класса).

coercion

Неявное преобразование экземпляра одного типа в другой во время операции, которая включает два аргумента одного и того же типа. Например, int(3.15) преобразует число с плавающей точкой в целое число 3, но в 3+4.5, каждый аргумент имеет другой тип (одно целое число, одно число с плавающей точкой), и оба должны быть преобразованы в один и тот же тип, прежде чем они могут быть сложены, иначе будет поднято исключение TypeError. Без приведения типов все аргументы даже совместимых типов должны были бы быть приведены к одному значению программистом, например, float(3)+4.5 вместо простого 3+4.5.

complex number

Расширение знакомой системы действительных чисел, в которой все числа выражаются как сумма вещественной и мнимой частей. Мнимые числа являются действительными кратными мнимой единицы (квадратный корень из -1), часто записываемыми i в математике или j в технике. Python имеет встроенную поддержку комплексных чисел, которые записываются с последней записью; мнимая часть записывается с суффиксом j, например, 3+1j. Для доступа к комплексным эквивалентам модуля math используйте cmath. Использование комплексных чисел является достаточно сложным математическим понятием. Если вам не требуется, можно его спокойно игнорировать.

context manager

Объект, который контролирует среду, видимую в инструкции with, определяя методы __enter__() и __exit__(). См. PEP 343.

context variable

Переменная, которая может иметь разные значения в зависимости от контекста. Это аналогично хранилищу локальных данных потока, в котором каждый поток выполнения может иметь разное значение для переменной. Однако с переменными контекста может быть несколько контекстов в одном потоке выполнения, и основное использование переменных контекста заключается в отслеживании переменных в асинхронных задачах с конкурентным выполнением. См. contextvars.

contiguous

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

coroutine

Корутины — более обобщённая форма подпрограмм. Подпрограммы входят в одну точку и выходят из другой. Корутины могут входить, выходить и возобновляться в многочисленных точках. Они могут быть реализованы с помощью инструкции async def. См. также PEP 492.

coroutine function

Функция, возвращающая объект генератора. Функция генератора может быть определена с помощью инструкции async def, и может содержать ключевые слова await, async for и async with. Они были введены в PEP 492.

CPython

Каноническая реализация языка программирования Python, распространяемая на python.org. Термин «CPython» используется при необходимости, чтобы отличить эту реализацию от других, таких как Jython или IronPython.

decorator

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

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

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

@staticmethod
def f(arg):
    ...

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

descriptor

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

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

dictionary

Ассоциативный массив, где произвольные ключи сопоставлены со значениями. Ключи могут быть любыми объектами с методами __hash__() и __eq__(). В Perl это называется хэш-таблицей.

dictionary comprehension

Лаконичный способ обработки всех или части элементов в итерируемом объекте и возвращения словаря с результатами. results = {n: n ** 2 for n in range(10)} генерирует словарь, содержащий ключ n сопоставленный со значением n ** 2. См. Операторы для списков, множеств и словарей.

dictionary view

Объекты, возвращаемые из dict.keys(), dict.values() и dict.items(), называются представлениями словаря. Они обеспечивают динамическое представление записей словаря, что означает, что при изменении словаря эти изменения отражаются в представлении. Чтобы преобразовать представление словаря в полный список, используйте list(dictview). См. Объекты представлений словаря.

docstring

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

duck-typing

Стиль программирования, при котором тип объекта не используется для определения наличия правильного интерфейса; вместо этого просто вызывается или используется метод или атрибут («Если он похож на утку и крякает как утка, значит, это должна быть утка»). Подчёркивая интерфейсы, а не конкретные типы, хорошо спроектированный код повышает гибкость, позволяя полиморфную подстановку. При подходе «duck typing» избегаются проверки с использованием type() или isinstance(). (Заметьте, что «duck typing» можно дополнить абстрактными базовыми классами.) Вместо этого обычно используются проверки hasattr() или стиль программирования EAFP.

EAFP

Проще попросить прощения, чем разрешения. Этот распространённый стиль кодирования Python предполагает существование допустимых ключей или атрибутов и перехватывает исключения, если предположение оказывается ложным. Этот чистый и быстрый стиль характеризуется наличием многих инструкций try и except. Этот метод контрастирует со стилем LBYL, распространённым во многих других языках, таких как C.

expression

Часть синтаксиса, которая может быть вычислена до определённого значения. Другими словами, выражение — это набор элементов выражения, таких как литералы, имена, обращение к атрибутам, операторы или вызовы функций, которые все возвращают значение. В отличие от многих других языков, не все конструкции языка являются выражениями. Также есть операторы, которые нельзя использовать как выражения, например, while. Присваивания также являются операторами, а не выражениями.

extension module

Модуль, написанный на C или C++, использующий C API Python для взаимодействия с ядром и с пользовательским кодом.

f-string

Строковые литералы, начинающиеся с 'f' или 'F', обычно называются «f-строками», что является сокращением от форматированных строковых литералов. См. также PEP 498.

file object

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

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

file-like object

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

finder

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

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

См. PEP 302, PEP 420 и PEP 451 для более подробной информации.

floor division
END_OF_DOCUMENT_MARKER

Математическое деление, округляющее результат вниз до ближайшего целого числа. Оператор целочисленного деления — //. Например, выражение 11 // 4 вычисляется как 2, в отличие от 2.75, возвращаемого обычным делением с плавающей точкой. Обратите внимание, что (-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, 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.

Генератор

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

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

Итератор генератора

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

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

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

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

>>> sum(i*i for i in range(10))         # sum of squares 0, 1, 4, ... 81
285
Обобщённая функция

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

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

Обобщённый тип

Тип, который может быть параметризован; обычно контейнерный класс, такой как list или dict. Используется для подсказок типов и аннотаций.

Подробнее см. обобщённые типы алиасов, PEP 483, PEP 484, PEP 585 и модуль typing.

GIL

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

Глобальная блокировка интерпретатора

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

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

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

Файл кеша байткода, основанный на хэше

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

Хэшируемый

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

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

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

IDLE

Интегрированная среда разработки для Python. IDLE — это базовая среда для редактирования и интерпретации, поставляемая со стандартной дистрибуцией Python.

Неизменяемый

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

import path

Список расположений (или пунктов пути), которые ищет поисковик по пути для импорта модулей. Во время импорта этот список расположений обычно берётся из sys.path, но для подпакетов он также может браться из атрибута родительского пакета __path__.

importing

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

importer

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

interactive

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

interpreted

Python — интерпретируемый язык, в отличие от компилируемого, хотя различие может быть размытым из-за наличия компилятора байт-кода. Это означает, что исходные файлы могут быть запущены непосредственно без явного создания исполняемого файла, который затем выполняется. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя программы на них, как правило, выполняются медленнее. См. также интерактивный.

interpreter shutdown

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

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

iterable

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

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

iterator

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

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

key function

Функция ключа или функция сортировки — это вызываемый объект, который возвращает значение, используемое для сортировки или упорядочивания. Например, 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(). Примеры создания и использования функций ключей приведены в Руководстве по сортировке.

keyword argument

См. аргумент.

lambda

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

LBYL

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

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

list

Встроенная последовательность Python. Несмотря на название, она больше похожа на массив в других языках, чем на связанный список, поскольку доступ к элементам имеет сложность O(1).

list comprehension

Лаконичный способ обработки всех или части элементов последовательности и возврата списка с результатами. result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0] генерирует список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Оператор if является необязательным. Если он опущен, обрабатываются все элементы range(256).

loader

Объект, загружающий модуль. Он должен определять метод с именем load_module(). Загрузчик обычно возвращается поисковиком finder. Подробнее см. PEP 302 и importlib.abc.Loader для абстрактного базового класса.

magic method

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

mapping

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

meta path finder

Поисковик finder, возвращаемый в результате поиска в sys.meta_path. Поисковики мета-пути связаны, но отличаются от поисковиков записей путей path entry finders.

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

metaclass

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

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

method

Функция, определённая внутри тела класса. Если вызывается как атрибут экземпляра этого класса, метод получит объект экземпляра в качестве своего первого аргумента (который обычно называется self). См. функцию и вложенную область видимости.

method resolution order

Порядок разрешения методов — порядок, в котором ищутся базовые классы при поиске члена во время обращения. См. Порядок разрешения методов в Python 2.3 для подробностей алгоритма, используемого интерпретатором Python начиная с версии 2.3.

module

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

См. также пакет.

module spec

Пространство имён, содержащее информацию, связанную с импортом, используемую для загрузки модуля. Экземпляр importlib.machinery.ModuleSpec.

MRO

См. порядок разрешения методов.

mutable

Изменяемые объекты могут изменять своё значение, но сохраняют свой id(). См. также неизменяемый.

named tuple

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

Несколько встроенных типов являются именованными кортежами, включая значения, возвращаемые time.localtime() и os.stat(). Ещё один пример — sys.float_info:

>>> sys.float_info[1]                   # indexed access
1024
>>> sys.float_info.max_exp              # named field access
1024
>>> isinstance(sys.float_info, tuple)   # kind of tuple
True

Некоторые именованные кортежи являются встроенными типами (например, перечисленные выше). В качестве альтернативы именованный кортеж можно создать с помощью обычного определения класса, которое наследуется от tuple и определяет именованные поля. Такой класс можно написать вручную или создать с помощью функции-фабрики collections.namedtuple(). Последний метод также добавляет некоторые дополнительные методы, которые могут отсутствовать у именованных кортежей, написанных вручную или встроенных.

namespace

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

namespace package

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

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

nested scope

Возможность обращения к переменной во внешнем определении. Например, функция, определённая внутри другой функции, может обращаться к переменным во внешней функции. Обратите внимание, что вложенные области видимости по умолчанию работают только для доступа, а не для присваивания. Локальные переменные как читают, так и записывают в самой внутренней области видимости. Аналогично, глобальные переменные читают и записывают в глобальное пространство имён. nonlocal позволяет записывать во внешние области видимости.

new-style class

Старое название для класса, который сейчас используется для всех объектов классов. В более ранних версиях Python только классы нового стиля могли использовать новые, универсальные возможности Python, такие как __slots__, дескрипторы, свойства, __getattribute__(), методы класса и статические методы.

object

Любые данные с состоянием (атрибуты или значения) и определённым поведением (методы). Также является конечным базовым классом любого класса нового стиля.

package

A Python модуль which can contain submodules or recursively, subpackages. Technically, a package is a Python module with an __path__ attribute.

See also обычный пакет and пакет пространства имён.

parameter

A named entity in a функции (or method) definition that specifies an аргумент (or in some cases, arguments) that the function can accept. There are five kinds of parameter:

  • positional-or-keyword: specifies an argument that can be passed either позиционно or as a именованный аргумент. This is the default kind of parameter, for example foo and bar in the following:

    def func(foo, bar=None): ...
    
  • positional-only: specifies an argument that can be supplied only by position. Positional-only parameters can be defined by including a / character in the parameter list of the function definition after them, for example posonly1 and posonly2 in the following:

    def func(posonly1, posonly2, /, positional_or_keyword): ...
    
  • keyword-only: specifies an argument that can be supplied only by keyword. Keyword-only parameters can be defined by including a single var-positional parameter or bare * in the parameter list of the function definition before them, for example kw_only1 and kw_only2 in the following:

    def func(arg, *, kw_only1, kw_only2): ...
    
  • var-positional: specifies that an arbitrary sequence of positional arguments can be provided (in addition to any positional arguments already accepted by other parameters). Such a parameter can be defined by prepending the parameter name with *, for example args in the following:

    def func(*args, **kwargs): ...
    
  • var-keyword: specifies that arbitrarily many keyword arguments can be provided (in addition to any keyword arguments already accepted by other parameters). Such a parameter can be defined by prepending the parameter name with **, for example kwargs in the example above.

Parameters can specify both optional and required arguments, as well as default values for some optional arguments.

See also the аргумент glossary entry, the FAQ question on разницу между аргументами и параметрами, the inspect.Parameter class, the Определения функций section, and PEP 362.

path entry

A single location on the пути импорта which the поиск по пути consults to find modules for importing.

path entry finder

A поисковик returned by a callable on sys.path_hooks (i.e. a крючок пути входа) which knows how to locate modules given a вход пути.

See importlib.abc.PathEntryFinder for the methods that path entry finders implement.

path entry hook

A callable on the sys.path_hook list which returns a поисковик по пути входа if it knows how to find modules on a specific вход пути.

path based finder

One of the default мета-поисковики which searches an путь импорта for modules.

path-like object

An object representing a file system path. A path-like object is either a str or bytes object representing a path, or an object implementing the os.PathLike protocol. An object that supports the os.PathLike protocol can be converted to a str or bytes file system path by calling the os.fspath() function; os.fsdecode() and os.fsencode() can be used to guarantee a str or bytes result instead, respectively. Introduced by PEP 519.

PEP

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

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

См. PEP 1.

portion

Набор файлов в одном каталоге (возможно, хранящихся в файле zip), которые вносят вклад в пакет пространства имён, как определено в PEP 420.

positional argument

См. аргумент.

provisional API

Провизорный API — это API, который намеренно исключён из гарантий обратной совместимости стандартной библиотеки. Хотя существенные изменения таких интерфейсов не ожидаются, до тех пор, пока они помечены как временные, могут происходить несовместимые с обратной совместимостью изменения (вплоть до удаления интерфейса), если этого потребуют разработчики ядра. Такие изменения не будут осуществляться без необходимости — они произойдут только в случае обнаружения серьёзных фундаментальных недостатков, которые были пропущены до включения API.

Даже для временных API несовместимые с обратной совместимостью изменения рассматриваются как «решение последнего средства» — будут предприняты все попытки найти решение, совместимое с обратной совместимостью, для любых выявленных проблем.

Этот процесс позволяет стандартной библиотеке продолжать эволюционировать со временем, не блокируя проблемные ошибки проектирования на длительный период. Дополнительные сведения см. в PEP 411.

provisional package

См. временный API.

Python 3000

Псевдоним для версии Python 3.x (придуман давно, когда выпуск версии 3 был чем-то в далёком будущем). Это также сокращается до «Py3k».

Pythonic

Идея или фрагмент кода, который тесно следует наиболее распространённым идиомам языка Python, а не реализует код с использованием концепций, распространённых в других языках. Например, распространённой идиомой в Python является цикл по всем элементам итерируемого объекта с использованием оператора for. Многие другие языки не имеют такого типа конструкции, поэтому люди, незнакомые с Python, иногда используют счётчик чисел вместо этого:

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

В отличие от более чистого, pythonic метода:

for piece in food:
    print(piece)
qualified name

Точечная запись, показывающая «путь» от глобальной области видимости модуля до класса, функции или метода, определённого в этом модуле, как определено в 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'
reference count

Количество ссылок на объект. Когда счётчик ссылок объекта падает до нуля, он освобождается. Подсчёт ссылок обычно не виден коду Python, но это ключевой элемент реализации CPython. Модуль sys определяет функцию getrefcount(), которую программисты могут вызвать для получения счётчика ссылок конкретного объекта.

regular package

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

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

__slots__

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

sequence

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

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

set comprehension

Лаконичный способ обработки всех или части элементов в итерируемом объекте и возврата множества с результатами. results = {c for c in 'abracadabra' if c not in 'abc'} генерирует множество строк {'r', 'd'}. См. Отображения для списков, множеств и словарей.

single dispatch

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

slice

Объект, обычно содержащий часть последовательности. Срез создается с использованием обозначения подстроки, [] с двоеточиями между числами, когда их несколько, например, в variable_name[1:3:5]. В обозначении квадратных скобок (подстроки) используется slice объекты внутри.

special method

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

statement

Утверждение является частью набора (блока кода). Утверждение — это либо выражение, либо одно из нескольких конструкций со ключевым словом, таких как if, while или for.

text encoding

Строка в Python — это последовательность кодовых точек Юникода (в диапазоне U+0000–U+10FFFF). Для хранения или передачи строки её нужно сериализовать как последовательность байтов.

Сериализация строки в последовательность байтов называется «кодированием», а восстановление строки из последовательности байтов — «декодированием».

Существует множество различных кодировок текста, которые совместно называются «кодировками текста» codecs.

text file

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

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

triple-quoted string

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

type

Тип объекта Python определяет, какого типа это объект; каждый объект имеет тип. Тип объекта доступен как атрибут __class__ или может быть получен с помощью type(obj).

type alias

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

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

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

См. typing и PEP 484, которые описывают эту функциональность.

type hint

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

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

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

См. typing и PEP 484, которые описывают эту функциональность.

universal newlines

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

END_OF_DOCUMENT_MARKER
variable annotation

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

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

class C:
    field: 'annotation'

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

count: int = 0

Синтаксис аннотации переменных объяснён в разделе Оператор присваивания с аннотацией.

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

virtual environment

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

См. также venv.

virtual machine

Виртуальная машина, полностью определённая программным способом. Виртуальная машина Python выполняет байткод, сгенерированный компилятором байткода.

Zen of Python

Список принципов и философий проектирования Python, полезных для понимания и использования языка. Список можно получить, набрав «import this» в интерактивном режиме.

© 2001–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/glossary.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API