Spec-Zone.ru › Python 3.10

Словарь терминов

>>>

Стандартный пригласительный знак 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__ должен возвращать асинхронный объект. async for разрешает асинхронные объекты, возвращаемые методом __anext__() асинхронного итератора, до тех пор, пока не возникнет исключение StopAsyncIteration. Введено в PEP 492.

attribute

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

Можно дать объекту атрибут, имя которого не является идентификатором, как определено в Идентификаторы и ключевые слова, например, используя setattr(), если объект это позволяет. Такой атрибут не будет доступен с помощью точечного выражения и вместо этого должен быть получен с помощью getattr().

awaitable

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

BDFL

Благожелательный диктатор на всю жизнь, также известный как Гвидо ван Россум, создатель Python.

binary file

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

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

borrowed reference

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

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

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.

callable

Вызываемый объект — это объект, который можно вызвать, возможно, со множеством аргументов (см. аргумент), с использованием следующего синтаксиса:

callable(argument1, argument2, ...)

Функция функция и, в расширенном смысле, метод метод являются вызываемыми. Экземпляр класса, реализующий метод __call__(), также является вызываемым.

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

Стиль программирования, который не рассматривает тип объекта для определения наличия нужного интерфейса; вместо этого, метод или атрибут просто вызывается или используется («Если выглядит как утка и крякает как утка, то это должна быть утка»). Эмфаза на интерфейсах, а не на конкретных типах, улучшает гибкость кода, позволяя полиморфную подстановку. Подход избегает проверок с использованием type() или isinstance(). (Обратите внимание, что подходом можно дополнить абстрактными базовыми классами.) Обычно применяются проверки с помощью 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

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

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

file-like object

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

filesystem encoding and error handler

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

Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не обеспечивает этой гарантии, функции API могут вызывать UnicodeError.

Функции sys.getfilesystemencoding() и sys.getfilesystemencodeerrors() могут использоваться для получения кодировки и обработчика ошибок файловой системы.

Кодировка и обработчик ошибок файловой системы настраиваются во время запуска Python функцией PyConfig_Read(): см. члены filesystem_encoding и filesystem_errors класса PyConfig.

См. также кодировку локали.

finder

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

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

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

floor division

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

function

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

function annotation

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

Аннотации функций обычно используются для намеков на типы: например, ожидается, что эта функция примет два 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)
garbage collection

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

generator

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

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

generator iterator

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

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

generator expression

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

>>> sum(i*i for i in range(10))         # sum of squares 0, 1, 4, ... 81
285
generic function

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

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

generic type

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

Для получения более подробной информации см. типы общих псевдонимов, PEP 483, PEP 484, PEP 585 и модуль typing.

GIL

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

global interpreter lock

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

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

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

hash-based pyc

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

hashable

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

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

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

IDLE

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

immutable

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

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

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

Подробность реализации CPython: CPython не последовательно применяет требование, чтобы итератор определял __iter__().

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] может завершиться ошибкой, если другой поток удалит ключ из словаря после проверки, но до доступа. Эту проблему можно решить с помощью блокировок или использования подхода EAFP.

locale encoding

В Unix — это кодировка локали LC_CTYPE. Ее можно установить с помощью locale.setlocale(locale.LC_CTYPE, new_locale).

В Windows — это кодовая страница ANSI (например, cp1252).

locale.getpreferredencoding(False) используется для получения кодировки локали.

Python использует кодировку и обработчик ошибок файловой системы для преобразования имен файлов Unicode в имена файлов в байтах.

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(). Загрузчик обычно возвращается поисковиком поисковиком. Подробнее см. PEP 302 и importlib.abc.Loader для абстрактного базового класса.

magic method

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

mapping

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

meta path finder

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

См. 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

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

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

parameter

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

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

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

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

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

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

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

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

path entry

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

path entry finder

Поисковик finder, возвращаемый вызываемым объектом в sys.path_hooks (т.е. обработчиком элемента пути), который знает, как найти модули, учитывая элемент пути.

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

path entry hook

Вызываемый объект в списке sys.path_hook, который возвращает поисковик элемента пути, если он знает, как найти модули в определённом элементе пути.

path based finder

Один из стандартных поисковиков метапути, который ищет модули по пути импорта.

path-like object

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

PEP

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

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

См. PEP 1.

portion

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

positional argument

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

provisional 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])

В отличие от более чистого идиоматичного решения Python:

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.

strong reference
END_OF_DOCUMENT_MARKER

В C API Python, сильная ссылка — это ссылка на объект, который принадлежит коду, удерживающему ссылку. Сильная ссылка создаётся вызовом Py_INCREF(), а освобождается вызовом Py_DECREF(), когда ссылка удаляется.

Функция Py_NewRef() может использоваться для создания сильной ссылки на объект. Обычно функция Py_DECREF() должна вызываться на сильной ссылке перед выходом из области видимости сильной ссылки, чтобы избежать утечки ссылки.

См. также ссылку-заём.

Кодировка текста

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

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

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

Текстовый файл

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

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

Строка в тройных кавычках

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

Тип

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

Псевдоним типа

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

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

def remove_gray_shades(
        colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
    pass

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

Color = tuple[int, int, int]

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

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

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

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

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

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

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

Универсальные символы новой строки

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

Аннотация переменной

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

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

class C:
    field: 'annotation'

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

count: int = 0

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

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

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

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

См. также venv.

Виртуальная машина

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

Философия Python

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

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

Spec-Zone.ru

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