Глоссарий
-
>>> -
Приглашение Python по умолчанию в интерактивной оболочке. Часто встречается в примерах кода, которые можно выполнить в интерактивном режиме в интерпретаторе.
-
... -
Может означать:
- Приглашение Python по умолчанию в интерактивной оболочке при вводе кода для блока с отступом, внутри пары соответствующих друг другу левого и правого разделителей (круглых, квадратных или фигурных скобок либо тройных кавычек) или после указания декоратора.
- Форма из трёх точек объекта Ellipsis.
-
abstract base class -
Абстрактные базовые классы дополняют утиный тип, предоставляя способ определения интерфейсов в случаях, когда другие методы, например
hasattr(), были бы неудобны или незаметно приводили бы к ошибкам (например, с магическими методами). ABC вводят виртуальные подклассы — классы, которые не наследуются от другого класса, но всё равно распознаются функциямиisinstance()иissubclass(); см. документацию модуляabc. В Python есть множество встроенных ABC для структур данных (в модулеcollections.abc), чисел (в модулеnumbers), потоков (в модулеio), а также для искателей и загрузчиков модулей (в модулеimportlib.abc). Вы можете создавать собственные ABC с помощью модуляabc. -
annotate function -
Вызываемый объект, который можно вызвать для получения аннотаций объекта. Функции аннотирования обычно являются функциями, автоматически создаваемыми в качестве атрибута
__annotate__функций, классов и модулей. Функции аннотирования представляют собой подмножество функций вычисления. -
annotation -
Метка, связанная с переменной, атрибутом класса, параметром функции или возвращаемым значением, которая по соглашению используется в качестве подсказки типа.
К аннотациям локальных переменных нельзя обратиться во время выполнения, но аннотации глобальных переменных, атрибутов классов и функций можно получить, вызвав
annotationlib.get_annotations()соответственно для модулей, классов и функций.См. также аннотацию переменной, аннотацию функции, PEP 484, PEP 526 и PEP 649, в которых описаны эти возможности. Рекомендации по работе с аннотациями см. также в разделе Рекомендации по работе с аннотациями.
-
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 -
В неформальной речи этим термином называют либо функцию асинхронного генератора, либо итератор асинхронного генератора, в зависимости от контекста. Формальные термины функция асинхронного генератора и итератор асинхронного генератора редко используются на практике; почти всегда достаточно просто сказать «асинхронный генератор».
-
asynchronous generator function -
Функция, возвращающая итератор асинхронного генератора. Она похожа на функцию сопрограммы, определённую с помощью
async def, но содержит выраженияyield, которые выдают последовательность значений, используемых в циклеasync for. См. PEP 525.Функция асинхронного генератора может содержать выражения
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. -
atomic operation -
Операция, которая выполняется как единый неделимый шаг: ни один другой поток не может увидеть её частично выполненной, а её результаты становятся видны одновременно. Python не гарантирует атомарность высокоуровневых операторов (например,
x += 1выполняет несколько байткодовых операций и не является атомарной). Атомарность гарантируется только в случаях, явно описанных в документации. См. также состояние гонки и гонку данных. -
attached thread state -
Состояние потока, активное для текущего потока ОС.
Когда состояние потока привязано, поток ОС получает доступ ко всему C API Python и может безопасно вызывать интерпретатор байткода.
Если в описании функции явно не указано иное, попытка вызова C API без привязанного состояния потока приведёт к фатальной ошибке или неопределённому поведению. Пользователь может явно привязать или отвязать состояние потока через C API; также это может неявно сделать среда выполнения, в том числе во время блокирующих вызовов C и между вызовами — интерпретатор байткода.
В большинстве сборок Python наличие привязанного состояния потока означает, что вызывающий поток удерживает GIL для текущего интерпретатора, поэтому в каждый момент времени привязанное состояние потока может иметь только один поток ОС. В сборках Python без глобальной блокировки интерпретатора несколько потоков могут одновременно иметь привязанное состояние потока, что обеспечивает истинный параллелизм интерпретатора байткода.
-
attribute -
Значение, связанное с объектом и обычно указываемое по имени с помощью выражений с точечной нотацией. Например, если у объекта o есть атрибут a, к нему можно обратиться как o.a.
Если объект это допускает, ему можно задать атрибут, имя которого не является идентификатором, определённым в разделе Имена (идентификаторы и ключевые слова), например с помощью
setattr(). К такому атрибуту нельзя обратиться с помощью точечной нотации; вместо этого его нужно получить с помощьюgetattr(). -
awaitable -
Объект, который можно использовать в выражении
await. Это может быть сопрограмма или объект с методом__await__(). См. также PEP 492. -
BDFL -
Благожелательный диктатор на всю жизнь (Benevolent Dictator For Life), он же Гвидо ван Россум, создатель Python.
-
binary file -
Файловый объект, способный читать и записывать объекты, подобные байтам. Примеры двоичных файлов: файлы, открытые в двоичном режиме (
'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. Объекты, подобные байтам, можно использовать в различных операциях с двоичными данными, таких как сжатие, запись в двоичный файл и отправка через сокет.Для некоторых операций двоичные данные должны быть изменяемыми. В документации такие объекты часто называются «объектами, подобными байтам, доступными для чтения и записи». Примеры изменяемых буферных объектов:
bytearrayиmemoryviewобъектаbytearray. Для других операций требуется хранить двоичные данные в неизменяемых объектах («объектах, подобных байтам, доступных только для чтения»); примеры таких объектов —bytesиmemoryviewобъектаbytes. -
bytecode -
Исходный код Python компилируется в байт-код — внутреннее представление программы Python в интерпретаторе CPython. Байт-код также кэшируется в файлах
.pyc, чтобы ускорить повторный запуск того же файла (повторная компиляция исходного кода в байт-код не требуется). Считается, что этот «промежуточный язык» выполняется на виртуальной машине, которая выполняет машинный код, соответствующий каждой инструкции байт-кода. Обратите внимание: байт-код не обязан работать на разных виртуальных машинах Python и не гарантирует стабильность между выпусками Python.Список инструкций байт-кода приведён в документации модуля dis.
-
callable -
Вызываемый объект — это объект, который можно вызвать, возможно, передав ему набор аргументов (см. аргумент), используя следующий синтаксис:
callable(argument1, argument2, argumentN)
Функция и, соответственно, метод являются вызываемыми объектами. Экземпляр класса, реализующий метод
__call__(), также является вызываемым объектом. -
callback -
Подпрограмма-функция, передаваемая в качестве аргумента для выполнения в будущем.
-
class -
Шаблон для создания объектов, определяемых пользователем. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.
-
class variable -
Переменная, определённая в классе и предназначенная для изменения только на уровне класса (то есть не в экземпляре класса).
-
closure variable -
Свободная переменная, на которую ссылаются из вложенной области видимости и которая определена во внешней области видимости, а не разрешается во время выполнения из глобального или встроенного пространства имён. Для предоставления доступа на запись её можно определить явно с помощью ключевого слова
nonlocal; если переменная только считывается, она определяется неявно.Например, в функции
innerиз следующего кода иx, иprintявляются свободными переменными, но толькоxявляется переменной замыкания:def outer(): x = 0 def inner(): nonlocal x x += 1 print(x) return innerИз-за атрибута
codeobject.co_freevars(который, несмотря на название, содержит только имена переменных замыкания, а не все упоминаемые свободные переменные) более общий термин свободная переменная иногда используют и тогда, когда имеется в виду именно переменная замыкания. -
complex number -
Расширение знакомой системы действительных чисел, в котором все числа выражаются как сумма действительной и мнимой частей. Мнимые числа являются действительными кратными мнимой единицы (квадратного корня из
-1); в математике её часто обозначаютi, а в инженерном деле —j. Python поддерживает комплексные числа встроенными средствами; они записываются в последней нотации, а мнимая часть обозначается суффиксомj, например3+1j. Для доступа к аналогам функций модуляmathдля комплексных чисел используйтеcmath. Работа с комплексными числами — довольно сложная математическая задача. Если вы не знаете, зачем они вам нужны, почти наверняка можете спокойно их игнорировать. -
concurrency -
Способность компьютерной программы выполнять несколько задач одновременно. Python предоставляет библиотеки для написания программ, использующих различные формы параллельного выполнения. Библиотека
asyncioпредназначена для работы с асинхронными задачами и сопрограммами. Модульthreadingпредоставляет доступ к потокам операционной системы, а модульmultiprocessing— к процессам операционной системы. Многоядерные процессоры могут одновременно выполнять потоки и процессы на разных ядрах ЦП (см. параллелизм). -
concurrent modification -
Изменение общих данных несколькими потоками одновременно. Параллельное изменение без надлежащей синхронизации может привести к состояниям гонки, а также вызвать гонку данных, повреждение данных или и то и другое.
-
context -
Значение этого термина зависит от того, где и как он используется. Некоторые распространённые значения:
- Временное состояние или окружение, устанавливаемое менеджером контекста с помощью оператора
with. - Набор связей «ключ—значение», связанных с определённым объектом
contextvars.Contextи доступных через объектыContextVar. См. также переменную контекста. - Объект
contextvars.Context. См. также текущий контекст.
- Временное состояние или окружение, устанавливаемое менеджером контекста с помощью оператора
-
context management protocol -
Методы
__enter__()и__exit__(), вызываемые операторомwith. См. PEP 343. -
context manager -
Объект, реализующий протокол управления контекстом и управляющий окружением, действующим в операторе
with. См. PEP 343. -
context variable -
Переменная, значение которой зависит от того, какой контекст является текущим контекстом. Доступ к значениям осуществляется через объекты
contextvars.ContextVar. Переменные контекста в основном используются для изоляции состояния параллельно выполняющихся асинхронных задач. -
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.
-
current context -
Контекст (объект
contextvars.Context), который в данный момент используется объектамиContextVarдля доступа (получения или установки) к значениям переменных контекста. У каждого потока есть собственный текущий контекст. Среды выполнения асинхронных задач (см.asyncio) связывают каждую задачу с контекстом, который становится текущим при начале или возобновлении выполнения задачи. -
cyclic isolate -
Подгруппа из одного или нескольких объектов, которые ссылаются друг на друга, образуя цикл ссылок, но на которые не ссылаются объекты вне этой группы. Цель сборщика циклического мусора — обнаружить такие группы и разорвать циклы ссылок, чтобы освободить память.
-
data race -
Ситуация, когда несколько потоков одновременно обращаются к одной и той же области памяти, по крайней мере одно обращение является записью, а потоки не используют синхронизацию для управления доступом. Состояния гонки данных приводят к недетерминированному поведению и могут вызвать повреждение данных. Правильное использование блокировок и других примитивов синхронизации предотвращает состояния гонки данных. Обратите внимание: состояния гонки данных могут возникать только в нативном коде, но нативный код может быть доступен через API Python. См. также состояние гонки и потокобезопасность.
-
deadlock -
Ситуация, в которой две или более задачи (потоки, процессы или корутины) бесконечно ждут друг от друга освобождения ресурсов или выполнения действий, не позволяя ни одной из них продолжить работу. Например, если поток A удерживает блокировку 1 и ждёт блокировку 2, а поток B удерживает блокировку 2 и ждёт блокировку 1, оба потока будут ждать бесконечно. В Python это часто происходит при получении нескольких блокировок в конфликтующем порядке или из-за циклических зависимостей join/await. Взаимоблокировок можно избежать, всегда получая несколько блокировок в одном и том же порядке. См. также блокировка и реентерабельность.
-
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. -
dunder -
Неформальное сокращение от «double underscore» («двойное подчёркивание»), используемое при обсуждении специального метода. Например,
__init__часто произносят как «да́ндер инит». -
EAFP -
Проще попросить прощения, чем разрешения. Этот распространённый стиль написания кода на Python предполагает наличие допустимых ключей или атрибутов и перехватывает исключения, если предположение оказывается неверным. Для этого чистого и быстрого стиля характерно использование множества инструкций
tryиexcept. Этот подход противопоставляется стилю LBYL, распространённому во многих других языках, например C. -
evaluate function -
Функция, которую можно вызвать для вычисления атрибута объекта с отложенным вычислением, например значения псевдонимов типов, созданных инструкцией
type. -
expression -
Фрагмент синтаксиса, который можно вычислить до некоторого значения. Иными словами, выражение — это совокупность элементов, таких как литералы, имена, доступ к атрибутам, операторы или вызовы функций, каждый из которых возвращает значение. Не все конструкции языка являются выражениями. Существуют также инструкции, которые нельзя использовать как выражения, например
while. Присваивания — это тоже инструкции, а не выражения. -
extension module -
Модуль, написанный на C или C++ и использующий C API Python для взаимодействия с ядром и пользовательским кодом.
-
f-string -
f-strings -
Строковые литералы с префиксом
fилиFобычно называют «f-строками» — это сокращение от форматированных строковых литералов. См. также PEP 498. -
file object -
Объект, предоставляющий API для работы с файлами (с такими методами, как
read()илиwrite()) для доступа к базовому ресурсу. В зависимости от способа создания файловый объект может обеспечивать доступ к реальному файлу на диске или к другому типу хранилища либо устройства связи (например, стандартному вводу/выводу, буферам в памяти, сокетам, каналам и т. д.). Файловые объекты также называют объектами, подобными файлам, или потоками.Фактически существует три категории файловых объектов: необработанные двоичные файлы, буферизованные двоичные файлы и текстовые файлы. Их интерфейсы определены в модуле
io. Канонический способ создания файлового объекта — использование функцииopen(). -
file-like object -
Синоним файлового объекта.
-
filesystem encoding and error handler -
Кодировка и обработчик ошибок, которые Python использует для декодирования байтов из операционной системы и кодирования Unicode для операционной системы.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов со значениями меньше 128. Если кодировка файловой системы не обеспечивает эту гарантию, функции API могут возбуждать исключение
UnicodeError.Для получения кодировки файловой системы и обработчика ошибок можно использовать функции
sys.getfilesystemencoding()иsys.getfilesystemencodeerrors().Кодировка файловой системы и обработчик ошибок настраиваются при запуске Python функцией
PyConfig_Read(): см. членыfilesystem_encodingиfilesystem_errorsобъектаPyConfig.См. также кодировку локали.
-
finder -
Объект, который пытается найти загрузчик для импортируемого модуля.
Существует два типа искателей: искатель метапути для использования с
sys.meta_pathи искатель элементов пути для использования сsys.path_hooks.Подробные сведения см. в разделах Искатели и загрузчики и
importlib. -
floor division -
Математическое деление с округлением вниз до ближайшего целого числа. Оператор целочисленного деления с округлением вниз —
//. Например, выражение11 // 4вычисляется в2, в отличие от2.75, возвращаемого при обычном делении чисел с плавающей запятой. Обратите внимание:(-11) // 4— это-3, поскольку это-2.75, округлённое вниз. См. PEP 238. -
free threading -
Модель многопоточности, в которой несколько потоков могут одновременно выполнять байт-код Python в одном интерпретаторе. Она противопоставляется глобальной блокировке интерпретатора, которая позволяет только одному потоку за раз выполнять байт-код Python. См. PEP 703.
-
free-threaded build -
Сборка CPython с поддержкой свободной многопоточности, настроенная с помощью параметра
--disable-gilперед компиляцией.См. раздел Поддержка свободной многопоточности в Python.
-
free variable -
Формально, согласно определению в модели выполнения языка, свободная переменная — это любая переменная, используемая в пространстве имён, но не являющаяся локальной переменной этого пространства имён. Пример см. в разделе переменная замыкания. На практике из-за названия атрибута
codeobject.co_freevarsэтот термин иногда также используют как синоним термина переменная замыкания. -
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 -
В неформальной речи используется для обозначения либо функции-генератора, либо итератора-генератора в зависимости от контекста. Формальные термины функция-генератор и итератор-генератор редко употребляются на практике; почти всегда достаточно слова «генератор».
-
generator function -
Функция, возвращающая объект генератора. Она выглядит как обычная функция, но содержит выражения
yield, которые создают последовательность значений, используемую в циклеforили получаемую по одному значению с помощью функцииnext(). См. раздел Выражения yield. -
generator iterator -
Объект, созданный функцией-генератором или генераторным выражением.
Каждая инструкция
yieldвременно приостанавливает обработку и сохраняет состояние выполнения (включая локальные переменные и ожидающие выполнения инструкции try). Когда итератор-генератор возобновляет работу, он продолжает с того места, на котором остановился (в отличие от функций, которые начинают работу заново при каждом вызове).Итераторы-генераторы также реализуют метод
send()для передачи значения приостановленному генератору и методthrow()для возбуждения исключения в точке, где генератор был приостановлен. См. раздел Методы итераторов-генераторов. -
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 всегда освобождается при выполнении операций ввода-вывода.
Начиная с Python 3.13, GIL можно отключить с помощью конфигурации сборки
--disable-gil. После сборки Python с этим параметром код нужно запускать с-X gil=0или предварительно установить переменную средыPYTHON_GIL=0. Эта возможность повышает производительность многопоточных приложений и упрощает эффективное использование многоядерных ЦП. Подробнее см. PEP 703.В предыдущих версиях C API Python функция могла объявлять, что для её использования требуется удерживать GIL. Это подразумевает наличие присоединённого состояния потока.
-
global state -
Данные, доступные в любой части программы, например переменные уровня модуля, переменные класса или статические переменные C в модулях расширения. В многопоточных программах глобальное состояние, совместно используемое потоками, обычно требует синхронизации, чтобы избежать состояний гонки и гонок данных.
-
hash-based pyc -
Файл кэша байткода, который для проверки актуальности использует хеш, а не время последнего изменения соответствующего исходного файла. См. Проверка актуальности кэшированного байткода.
-
hashable -
Объект является хешируемым, если его хеш-значение не меняется в течение всего срока его существования (для этого ему нужен метод
__hash__()) и его можно сравнивать с другими объектами (для этого ему нужен метод__eq__()). Хешируемые объекты, которые считаются равными, должны иметь одинаковое хеш-значение.Хешируемость позволяет использовать объект как ключ словаря и элемент множества, поскольку эти структуры данных используют хеш-значение внутри себя.
Большинство неизменяемых встроенных объектов Python хешируемы; изменяемые контейнеры (например, списки и словари) — нет; неизменяемые контейнеры (например, кортежи и неизменяемые множества) хешируемы, только если хешируемы их элементы. Экземпляры классов, определённых пользователем, по умолчанию хешируемы. Все они считаются неравными (кроме сравнения с самими собой), а их хеш-значение определяется на основе их
id(). -
IDLE -
Интегрированная среда разработки и обучения для Python. IDLE — редактор и оболочка Python — это простой редактор и среда интерпретатора, входящие в стандартный дистрибутив Python.
-
immortal -
Бессмертные объекты — это особенность реализации CPython, представленная в PEP 683.
Если объект бессмертен, его счётчик ссылок никогда не изменяется, поэтому он не освобождается, пока работает интерпретатор. Например, в CPython бессмертны
TrueиNone.Бессмертные объекты можно определить с помощью
sys._is_immortal()или с помощьюPyUnstable_IsImmortal()в C API. -
immutable -
Объект с фиксированным значением. К неизменяемым объектам относятся числа, строки и кортежи. Такой объект нельзя изменить. Чтобы сохранить другое значение, нужно создать новый объект. Неизменяемые объекты играют важную роль там, где требуется постоянное хеш-значение, например в качестве ключа словаря. Неизменяемые объекты по своей природе являются потокобезопасными, поскольку их состояние нельзя изменить после создания, что исключает проблемы, связанные с ненадлежащей синхронизацией параллельного изменения.
-
import path -
Список местоположений (или элементов пути), в которых механизм поиска по пути ищет импортируемые модули. При импорте этот список местоположений обычно берётся из
sys.path, но для подпакетов он также может браться из атрибута__path__родительского пакета. -
importing -
Процесс, благодаря которому код Python в одном модуле становится доступен коду Python в другом модуле.
-
importer -
Объект, который и находит, и загружает модуль; одновременно объект поиска и загрузчик.
-
index -
Числовое значение, представляющее позицию элемента в последовательности.
В Python индексация начинается с нуля. Например,
things[0]обозначает первый элементthings;things[1]обозначает второй.В некоторых контекстах Python допускает отрицательные индексы для отсчёта с конца последовательности, а также индексацию с помощью срезов.
См. также индексирование.
-
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__(). Также обратите внимание, что CPython без GIL не гарантирует потокобезопасность операций с итераторами. -
key -
Значение, которое идентифицирует запись в отображении. См. также индексирование.
-
key function -
Ключевая функция, или функция сортировки, — это вызываемый объект, возвращающий значение, используемое для сортировки или упорядочивания. Например,
locale.strxfrm()используется для получения ключа сортировки с учётом принятых в данной локали правил.В Python есть ряд инструментов, принимающих ключевые функции для управления порядком элементов или их группировкой. К ним относятся
min(),max(),sorted(),list.sort(),heapq.merge(),heapq.nsmallest(),heapq.nlargest()иitertools.groupby().Создать ключевую функцию можно несколькими способами. Например, метод
str.casefold()может служить ключевой функцией для сортировки без учёта регистра. Также ключевую функцию можно создать с помощью выраженияlambda, напримерlambda r: (r[0], r[2]). Кроме того,operator.attrgetter(),operator.itemgetter()иoperator.methodcaller()— это три конструктора ключевых функций. Примеры создания и использования ключевых функций см. в руководстве Практическое руководство по сортировке. -
keyword argument -
См. аргумент.
-
lambda -
Анонимная встроенная функция, состоящая из одного выражения, которое вычисляется при вызове функции. Синтаксис создания лямбда-функции:
lambda [parameters]: expression -
LBYL -
«Сначала посмотри, потом действуй». При таком стиле программирования перед вызовом или поиском явно проверяются предварительные условия. Этот стиль противопоставляется подходу EAFP и характеризуется наличием множества инструкций
if.В многопоточной среде подход LBYL может привести к состоянию гонки между «проверкой» и «действием». Например, код
if key in mapping: return mapping[key]может завершиться ошибкой, если другой поток удалит key из mapping после проверки, но до обращения к нему. Эту проблему можно решить с помощью блокировок или используя подход EAFP. См. также потокобезопасность. -
lexical analyzer -
Формальное название токенизатора; см. токен.
-
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). -
lock -
Примитив синхронизации, который позволяет только одному потоку одновременно обращаться к общему ресурсу. Перед доступом к защищённому ресурсу поток должен получить блокировку, а после — освободить её. Если поток пытается получить блокировку, уже удерживаемую другим потоком, он будет заблокирован, пока блокировка не освободится. Модуль
threadingв Python предоставляетLock(обычную блокировку) иRLock(рекурсивную блокировку). Блокировки используются для предотвращения состояний гонки и обеспечения потокобезопасного доступа к общим данным. Существуют альтернативные шаблоны проектирования, не использующие блокировки, например очереди, шаблоны «производитель/потребитель» и локальное состояние потока. См. также взаимная блокировка и рекурсивная блокировка. -
lock-free -
Операция, которая не захватывает никакую блокировку и использует атомарные инструкции ЦП для обеспечения корректности. Блокировки не мешают таким операциям выполняться параллельно, и сами операции не могут быть заблокированы операциями, удерживающими блокировки. В Python без GIL встроенные типы, например
dictиlist, обеспечивают чтение без блокировок. Это означает, что другие потоки могут видеть промежуточные состояния во время многоэтапных изменений, даже если эти изменения выполняются при удержании блокировки отдельного объекта. -
loader -
Объект, загружающий модуль. Он должен определять методы
exec_module()иcreate_module(), реализующие интерфейсLoader. Обычно загрузчик возвращается объектом поиска. См. также: -
locale encoding -
В Unix — это кодировка локали LC_CTYPE. Её можно задать с помощью
locale.setlocale(locale.LC_CTYPE, new_locale).В Windows — это кодовая страница ANSI (например,
"cp1252").В Android и VxWorks Python использует
"utf-8"в качестве кодировки локали.Для получения кодировки локали можно использовать
locale.getencoding(). -
magic method -
Неформальный синоним термина специальный метод.
-
mapping -
Объект-контейнер, поддерживающий поиск по произвольным ключам и реализующий методы, определённые в абстрактных базовых классах
collections.abc.Mappingилиcollections.abc.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 -
Объект, состояние которого может изменяться в ходе выполнения программы. В многопоточных программах изменяемые объекты, совместно используемые потоками, требуют тщательной синхронизации во избежание состояний гонки. См. также неизменяемый, потокобезопасный и параллельное изменение.
-
named tuple
-
Термин «именованный кортеж» относится к любому типу или классу, который наследуется от 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и содержащего определения именованных полей. Такой класс можно написать вручную, создать путём наследования отtyping.NamedTupleили с помощью фабричной функцииcollections.namedtuple(). Последние способы также добавляют некоторые дополнительные методы, которых может не быть у написанных вручную или встроенных именованных кортежей. -
namespace -
Место, где хранится переменная. Пространства имён реализованы как словари. Существуют локальное, глобальное и встроенное пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён обеспечивают модульность, предотвращая конфликты имён. Например, функции
builtins.openиos.open()различаются своими пространствами имён. Пространства имён также повышают удобство чтения и сопровождения кода, поскольку позволяют понять, какой модуль реализует ту или иную функцию. Например, записьrandom.seed()илиitertools.islice()показывает, что эти функции реализованы соответственно модулямиrandomиitertools. -
namespace package -
пакет, который служит только контейнером для подпакетов. Пространства имён пакетов могут не иметь физического представления и, в частности, отличаются от обычного пакета отсутствием файла
__init__.py.Пространства имён пакетов позволяют нескольким пакетам, которые можно устанавливать по отдельности, иметь общий родительский пакет. В остальных случаях рекомендуется использовать обычный пакет.
Дополнительные сведения см. в PEP 420 и разделе Пространства имён пакетов.
См. также модуль.
-
native code -
Код, скомпилированный в машинные инструкции и выполняющийся непосредственно на процессоре, в отличие от интерпретируемого кода или кода, выполняющегося в виртуальной машине. В контексте Python под машинным кодом обычно понимают код на C, C++, Rust или Fortran в модулях расширения, который можно вызывать из Python. См. также модуль расширения.
-
nested scope -
Возможность обратиться к переменной из охватывающего определения. Например, функция, определённая внутри другой функции, может обращаться к переменным внешней функции. Обратите внимание, что по умолчанию вложенные области видимости работают только для чтения, но не для присваивания. Локальные переменные и читаются, и записываются во внутренней области видимости. Аналогично, глобальные переменные читаются и записываются в глобальном пространстве имён. Инструкция
nonlocalпозволяет выполнять запись во внешние области видимости. -
new-style class -
Прежнее название разновидности классов, используемой теперь для всех объектов-классов. В ранних версиях Python только классы нового стиля поддерживали более новые и универсальные возможности Python, такие как
__slots__, дескрипторы, свойства,__getattribute__(), методы класса и статические методы. -
non-deterministic -
Поведение, при котором результат выполнения программы может меняться при разных запусках с одними и теми же входными данными. В многопоточных программах недетерминированное поведение часто возникает из-за состояний гонки, когда относительная последовательность или время выполнения потоков влияют на результат. Правильная синхронизация с помощью блокировок и других примитивов синхронизации помогает обеспечить детерминированное поведение.
-
object -
Любые данные, имеющие состояние (атрибуты или значение) и определённое поведение (методы). Также базовый класс всех классов нового стиля.
-
optimized scope -
Область видимости, в которой имена целевых локальных переменных надёжно известны компилятору во время компиляции кода, что позволяет оптимизировать чтение и запись этих переменных. Таким образом оптимизируются локальные пространства имён функций, генераторов, сопрограмм, включений и генераторных выражений. Примечание: большинство оптимизаций интерпретатора применяется ко всем областям видимости; только оптимизации, основанные на известном наборе локальных и нелокальных имён переменных, ограничены оптимизированными областями видимости.
-
optional module -
Модуль расширения, входящий в стандартную библиотеку, но отсутствующий в некоторых сборках CPython, обычно из-за отсутствия сторонних библиотек или недоступности модуля на данной платформе.
Список необязательных модулей, требующих сторонних библиотек, см. в разделе Требования для необязательных модулей.
-
package -
Python- модуль, который может содержать подмодули или, рекурсивно, подпакеты. Технически пакет — это модуль Python с атрибутом
__path__.См. также обычный пакет и пространство имён пакетов.
-
parallelism -
Одновременное выполнение нескольких операций (например, на нескольких ядрах процессора). В сборках Python с глобальной блокировкой интерпретатора (GIL) в каждый момент времени только один поток выполняет байт-код Python, поэтому для использования нескольких ядер процессора обычно задействуют несколько процессов (например,
multiprocessing) или машинные расширения, освобождающие GIL. В Python с отключённой блокировкой потоков несколько потоков Python могут одновременно выполнять код Python на разных ядрах. -
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. -
-
per-object lock -
Блокировка, связанная с отдельным экземпляром объекта, а не являющаяся общей для всех объектов глобальной блокировкой. В Python с отключённой блокировкой потоков встроенные типы, например
dictиlist, используют блокировки для отдельных объектов: это позволяет выполнять операции над разными объектами одновременно, сериализуя операции над одним и тем же объектом. Операции, удерживающие блокировку объекта, не позволяют выполнять другие операции с блокировкой над тем же объектом, но не блокируют операции без блокировок lock-free. -
path entry -
Отдельное местоположение в пути импорта, которое проверяет поисковик на основе пути при поиске импортируемых модулей.
-
path entry finder -
Поисковик, возвращаемый вызываемым объектом из
sys.path_hooks(то есть обработчиком элемента пути), который умеет находить модули по заданному элементу пути.Список методов, которые реализуют поисковики элементов пути, см. в
importlib.abc.PathEntryFinder. -
path entry hook -
Вызываемый объект из списка
sys.path_hooks, который возвращает поисковик элементов пути, если умеет находить модули в определённом элементе пути. -
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 должны приводиться краткая техническая спецификация и обоснование предлагаемых возможностей.
PEP призваны быть основным механизмом выдвижения крупных предложений по развитию, сбора мнений сообщества по тому или иному вопросу и документирования проектных решений, принятых при разработке 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])В отличие от более лаконичного, идиоматичного для 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'
-
race condition -
Состояние программы, при котором её поведение зависит от относительной последовательности или времени наступления событий, особенно в многопоточных программах. Состояния гонки могут приводить к недетерминированному поведению и ошибкам, которые трудно воспроизвести. Гонка данных — это особый вид состояния гонки, связанный с несинхронизированным доступом к общей памяти. Стиль программирования LBYL особенно подвержен состояниям гонки в многопоточном коде. Использование блокировок и других примитивов синхронизации помогает предотвратить состояния гонки.
-
reference count -
Количество ссылок на объект. Когда счётчик ссылок объекта становится равен нулю, объект освобождается. Некоторые объекты бессмертны: их счётчики ссылок никогда не изменяются, поэтому такие объекты никогда не освобождаются. Подсчёт ссылок, как правило, не виден из кода Python, но является важной частью реализации CPython. Программисты могут вызвать функцию
sys.getrefcount(), чтобы получить количество ссылок на определённый объект.В CPython количество ссылок не считается стабильным или строго определённым значением: число ссылок на объект и то, как на него влияет код Python, могут различаться в разных версиях.
-
regular package -
Традиционный пакет, например каталог, содержащий файл
__init__.py.См. также пространство имён пакетов.
-
reentrant -
Свойство функции или блокировки, позволяющее одному и тому же потоку вызывать функцию или захватывать блокировку несколько раз без ошибок и взаимной блокировки.
Для функций реентерабельность означает, что функцию можно безопасно вызвать повторно до завершения предыдущего вызова; это важно, когда функции вызываются рекурсивно или из обработчиков сигналов. Небезопасные для потоков функции могут вести себя недетерминированно, если их повторно вызывают в многопоточной программе.
Для блокировок реентерабельна блокировка Python
threading.RLock: поток, уже владеющий блокировкой, может захватить её повторно без блокирования. Напротив,threading.Lockне является реентерабельной — попытка захватить её дважды из одного потока приведёт к взаимной блокировке.См. также блокировка и взаимная блокировка.
-
REPL -
Сокращение от «цикл чтения — вычисления — вывода» (read–eval–print loop), другое название интерактивной оболочки интерпретатора.
-
__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 -
Объект типа
slice, используемый для описания части последовательности. Объект-срез создаётся при использовании формы среза в нотации индексации — с двоеточиями в квадратных скобках, напримерvariable_name[1:3:5]. -
soft deprecated -
Не рекомендуется использовать API с мягким статусом устаревания в новом коде, но его безопасно применять в уже существующем коде. Такой API по-прежнему документируется и тестируется, однако дальнейшее его развитие прекращено.
В отличие от обычного устаревания, мягкое устаревание не предполагает удаления API и не приводит к появлению предупреждений.
-
special method -
Метод, который Python неявно вызывает для выполнения определённой операции над типом, например сложения. Имена таких методов начинаются и заканчиваются двумя символами подчёркивания. Специальные методы описаны в разделе Имена специальных методов.
-
standard library
-
Набор пакетов, модулей и модулей расширения, распространяемых в составе официального пакета интерпретатора Python. Точный состав набора может различаться в зависимости от платформы, доступных системных библиотек и других критериев. Документацию можно найти в разделе Стандартная библиотека Python.
Список всех возможных имён модулей стандартной библиотеки см. также в
sys.stdlib_module_names. -
statement -
Инструкция — это часть составной инструкции (или «блока» кода). Инструкция представляет собой либо выражение, либо одну из нескольких конструкций с ключевым словом, например
if,whileилиfor. -
static type checker -
Внешний инструмент, который читает и анализирует код Python в поиске проблем, например неверно указанных типов. См. также подсказки типов и модуль
typing. -
stdlib -
Сокращение от стандартная библиотека.
-
steal -
В C API Python «заимствование с передачей владения» аргумента означает, что владение аргументом передаётся вызываемой функции. После вызова вызывающая сторона не должна использовать эту ссылку. Как правило, функции, которые «забирают» аргумент, делают это даже в случае сбоя.
Полное объяснение см. в разделе Подробные сведения о подсчёте ссылок.
-
strong reference -
В C API Python сильная ссылка — это ссылка на объект, которым владеет код, хранящий эту ссылку. Сильная ссылка создаётся вызовом
Py_INCREF()и освобождается вызовомPy_DECREF()при удалении ссылки.Для создания сильной ссылки на объект можно использовать функцию
Py_NewRef(). Обычно перед выходом из области видимости сильной ссылки необходимо вызвать для неё функциюPy_DECREF(), чтобы не допустить утечки ссылки.См. также заимствованная ссылка.
-
subscript -
Выражение в квадратных скобках выражения подписки, например
3вitems[3]. Обычно используется для выбора элемента контейнера. При обращении по индексу к отображению также называется ключом, а при обращении к последовательности — индексом. -
synchronization primitive -
Базовый элемент для координации (синхронизации) выполнения нескольких потоков, обеспечивающий потокобезопасный доступ к общим ресурсам. Модуль
threadingв Python предоставляет несколько примитивов синхронизации, включаяLock,RLock,Semaphore,Condition,EventиBarrier. Кроме того, модульqueueпредоставляет очереди с несколькими производителями и потребителями, особенно полезные в многопоточных программах. Эти примитивы помогают предотвращать состояния гонки и координировать выполнение потоков. См. также блокировка. -
t-string -
t-strings -
Строковые литералы с префиксом
tилиTобычно называют «t-строками» — сокращённо от шаблонные строковые литералы. -
text encoding -
Строка в Python — это последовательность кодовых точек Unicode (в диапазоне
U+0000–U+10FFFF). Чтобы сохранить или передать строку, её необходимо сериализовать в последовательность байтов.Сериализация строки в последовательность байтов называется «кодированием», а восстановление строки из последовательности байтов — «декодированием».
Существует множество различных кодеков для сериализации текста, которые в совокупности называются «текстовыми кодировками».
-
text file -
Файловый объект, способный читать и записывать объекты
str. Часто текстовый файл фактически обращается к потоку данных, ориентированному на байты, и автоматически обрабатывает текстовую кодировку. К текстовым файлам относятся файлы, открытые в текстовом режиме ('r'или'w'),sys.stdin,sys.stdoutи экземплярыio.StringIO.См. также двоичный файл — файловый объект, способный читать и записывать объекты, подобные байтам.
-
thread state -
Информация, используемая средой выполнения CPython для работы в потоке ОС. Например, к ней относятся текущее исключение (если оно есть) и состояние интерпретатора байт-кода.
Каждое состояние потока привязано к одному потоку ОС, но для потоков может быть доступно несколько состояний потока. Одновременно к потоку может быть присоединено не более одного состояния.
Для вызова большинства функций C API Python требуется присоединённое состояние потока, если в документации функции явно не указано иное. Интерпретатор байт-кода работает только при наличии присоединённого состояния потока.
Каждое состояние потока принадлежит одному интерпретатору, но у каждого интерпретатора может быть множество состояний потока, в том числе несколько состояний для одного и того же потока ОС. Состояния потоков из разных интерпретаторов могут быть привязаны к одному потоку, но в любой момент к этому потоку может быть присоединено только одно из них.
Дополнительные сведения см. в разделе Состояние потока и глобальная блокировка интерпретатора.
-
thread-safe -
Модуль, функция или класс, работающие корректно при одновременном использовании несколькими потоками. Потокобезопасный код использует соответствующие примитивы синхронизации, например блокировки, для защиты общего изменяемого состояния либо устроен так, чтобы полностью избегать общего изменяемого состояния. В сборке без GIL встроенные типы, такие как
dict,listиset, используют внутренние блокировки, чтобы сделать многие операции потокобезопасными, хотя гарантия потокобезопасности не всегда предоставляется. При использовании непотокобезопасного кода в многопоточных программах могут возникать состояния гонки и гонки данных. -
token -
Небольшая единица исходного кода, создаваемая лексическим анализатором (также называемым токенизатором). Имена, числа, строки, операторы, символы новой строки и подобные элементы представлены токенами.
Модуль
tokenizeпредоставляет доступ к лексическому анализатору Python. Модульtokenсодержит сведения о различных типах токенов. -
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 -
type hint -
Аннотация, указывающая ожидаемый тип переменной, атрибута класса, параметра функции или возвращаемого значения.
Подсказки типов необязательны и не проверяются Python, но полезны для статических анализаторов типов. Они также могут помочь IDE при автодополнении кода и рефакторинге.
Подсказки типов глобальных переменных, атрибутов классов и функций, но не локальных переменных, можно получить с помощью
typing.get_type_hints(). -
universal newlines -
Способ интерпретации текстовых потоков, при котором концом строки считаются все перечисленные ниже варианты: символ конца строки в Unix
'\n', соглашение Windows'\r\n'и старое соглашение Macintosh'\r'. См. PEP 278 и PEP 3116, а также дополнительный вариант использованияbytes.splitlines(). -
variable annotation -
Аннотация переменной или атрибута класса.
При аннотировании переменной или атрибута класса присваивание необязательно:
class C: field: 'annotation'Аннотации переменных обычно используются для подсказок типов: например, ожидается, что эта переменная будет принимать значения типа
int:count: int = 0
Синтаксис аннотаций переменных описан в разделе Инструкции аннотированного присваивания.
См. аннотация функции, PEP 484 и PEP 526, в которых описана эта функциональность. Рекомендации по работе с аннотациями см. также в разделе Рекомендации по использованию аннотаций.
-
virtual environment -
Изолированная среда выполнения, позволяющая пользователям Python и приложениям устанавливать и обновлять дистрибутивные пакеты Python, не влияя на работу других приложений Python в той же системе.
См. также
venv. -
virtual machine -
Компьютер, полностью реализованный программными средствами. Виртуальная машина Python исполняет байт-код, созданный компилятором байт-кода.
-
walrus operator -
Шуточное название оператора выражения присваивания
:=: если наклонить голову, он немного напоминает моржа. -
Zen of Python -
Перечень принципов и философских идей, лежащих в основе дизайна Python и помогающих лучше понять язык и пользоваться им. Этот перечень можно вывести, введя «
import this» в интерактивной оболочке.
© 2001 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.14/glossary.html