Spec-Zone.ru › Python 3.13

Глоссарий

>>>

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

...

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

  • Приглашение Python по умолчанию для интерактивной оболочки при вводе кода с отступом, внутри пары соответствующих левых и правых разделителей (скобок, квадратных скобок, фигурных скобок или тройных кавычек) либо после указания декоратора.
  • Форма из трёх точек для объекта Ellipsis.
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))
    

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

См. также статью глоссария параметр, ответ на часто задаваемый вопрос о разнице между аргументами и параметрами и 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

Доброжелательный диктатор на всю жизнь (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. Работа с комплексными числами — довольно продвинутая математическая возможность. Если вы не знаете, зачем они вам нужны, почти наверняка можете спокойно их игнорировать.

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) связывают каждую задачу с контекстом, который становится текущим при запуске или возобновлении выполнения задачи.

decorator

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

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

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

@staticmethod
def f(arg):
    ...

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

descriptor

Любой объект, который определяет методы __get__(), __set__() или __delete__(). Если атрибут класса является дескриптором, при поиске атрибута срабатывает его особое поведение связывания. Обычно при использовании a.b для получения, установки или удаления атрибута в словаре класса a ищется объект с именем b, но если 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.

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 для декодирования байтов, полученных от операционной системы, и кодирования 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 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

Функция, возвращающая итератор-генератор. Она похожа на обычную функцию, но содержит выражения 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 всегда освобождается при выполнении операций ввода-вывода.

Начиная с Python 3.13, GIL можно отключить с помощью параметра конфигурации сборки --disable-gil. После сборки Python с этим параметром код необходимо запускать с -X gil=0 или предварительно задать переменную окружения PYTHON_GIL=0. Эта возможность повышает производительность многопоточных приложений и упрощает эффективное использование многоядерных процессоров. Подробнее см. PEP 703.

hash-based pyc

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

hashable

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

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

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

IDLE

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

immortal

Бессмертные объекты — деталь реализации CPython, представленная в PEP 683.

У бессмертного объекта его счётчик ссылок никогда не изменяется, поэтому он не освобождается, пока работает интерпретатор. Например, в CPython бессмертны True и None.

immutable

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

import path

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

importing

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

importer

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

interactive

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

interpreted

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

interpreter shutdown

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

Основная причина завершения работы интерпретатора — окончание выполнения модуля __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 со свободной многопоточностью не гарантирует потокобезопасность операций с итераторами.

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(), operator.itemgetter() и operator.methodcaller(). Примеры создания и использования ключевых функций см. в разделе Руководство по сортировке.

keyword argument

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

lambda

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

LBYL

«Сначала посмотри, потом прыгай» (Look before you leap). При таком стиле программирования перед вызовом функции или поиском элемента явно проверяются предварительные условия. Этот подход противопоставляется подходу 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).

loader

Объект, который загружает модуль. Для реализации интерфейса Loader он должен определять методы exec_module() и create_module(). Загрузчик обычно возвращается искателем. См. также:

  • Искатели и загрузчики
  • importlib.abc.Loader
  • PEP 302
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

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

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 и разделе Пространственные пакеты.

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

nested scope

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

new-style class

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

object

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

optimized scope

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

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 в примере выше.

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

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

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'
reference count

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

В CPython счётчики ссылок не считаются стабильными или однозначно определёнными значениями; число ссылок на объект и то, как на него влияет код Python, могут различаться в разных версиях.

regular package

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

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

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

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

soft deprecated

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

В отличие от обычного устаревания, мягкое устаревание не предполагает удаления API и не приводит к выдаче предупреждений.

См. PEP 387: мягкое устаревание.

special method

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

standard library

Набор пакетов, модулей и модулей расширения, распространяемых в составе официального пакета интерпретатора Python. Точный состав этого набора может зависеть от платформы, доступных системных библиотек и других критериев. Документация доступна в разделе Стандартная библиотека Python.

Список всех возможных имён модулей стандартной библиотеки см. также в sys.stdlib_module_names.

statement

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

static type checker

Внешний инструмент, который читает и анализирует код Python, выявляя такие проблемы, как ошибки типов. См. также подсказки типов и модуль typing.

stdlib

Сокращение от стандартная библиотека.

strong reference

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

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

См. также заимствованная ссылка.

text encoding

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

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

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

text file

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

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

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

Описание этой функции см. в typing и PEP 484.

type hint

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

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

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

Описание этой функции см. в typing и PEP 484.

universal newlines

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

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–2025 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/glossary.html

Spec-Zone.ru

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