Spec-Zone.ru › Python 3.11

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

>>>

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

...

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

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

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

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

abstract base class

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

annotation

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

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

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

argument

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

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

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

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

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

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

asynchronous context manager

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

asynchronous generator

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

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

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

asynchronous generator iterator

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

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

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

asynchronous iterable

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

asynchronous iterator

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

attribute

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

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

awaitable

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

BDFL

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

binary file

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

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

borrowed reference

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

Рекомендуется вызывать 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

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

complex number

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

context manager

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

context variable

Переменная, которая может иметь разные значения в зависимости от контекста. Это похоже на Thread-Local Storage, в котором каждый поток выполнения может иметь разное значение для переменной. Однако с переменными контекста может быть несколько контекстов в одном потоке выполнения, и основное использование переменных контекста — отслеживание переменных в одновременных асинхронных задачах. См. contextvars.

contiguous

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

coroutine

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

coroutine function

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

CPython

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

decorator

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

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

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

@staticmethod
def f(arg):
    ...

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

descriptor

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

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

dictionary

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

dictionary comprehension

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

dictionary view

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

docstring

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

duck-typing

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

EAFP

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

expression

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

extension module

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

f-string

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

file object

Объект, предоставляющий файловый 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

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

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

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

floor division

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

function

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

function annotation

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

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

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

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

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

__future__

Оператор future, from __future__ import <feature>, указывает компилятору на то, чтобы компилировать текущий модуль с использованием синтаксиса или семантики, которые станут стандартными в будущей версии Python. Модуль __future__ документирует возможные значения feature. Импортируя этот модуль и вычисляя его переменные, вы можете увидеть, когда новая функция была впервые добавлена в язык и когда она станет (или стала) стандартной:

>>> import __future__
>>> __future__.division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
garbage collection

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

generator

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

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

generator iterator

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

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

generator expression

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

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

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

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

generic type

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

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

GIL

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

global interpreter lock

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

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

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

hash-based pyc

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

hashable

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

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

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

IDLE

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

immutable

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

import path

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

importing

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

importer

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

interactive

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

interpreted

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

interpreter shutdown

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

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

iterable

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

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

iterator

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

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

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

key function

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

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

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

keyword argument

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

lambda

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

LBYL

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

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

locale encoding

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

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

В Android и VxWorks Python использует "utf-8" в качестве кодировки локали.

locale.getencoding() может быть использован для получения кодировки локали.

См. также кодировку и обработчик ошибок файловой системы.

list

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

list comprehension

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

loader

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

magic method

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

mapping

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

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

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

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

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

namespace

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

namespace package

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

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

nested scope

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

new-style class

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

object

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

package

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

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

parameter

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

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

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

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

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

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

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

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

path entry

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

path entry finder

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

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

path entry hook

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

path based finder

One of the default находчиков метапути which searches an путь импорта for modules.

path-like object

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

PEP

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

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

См. PEP 1.

portion

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

positional argument

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

provisional API

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

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

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

provisional package

См. провизорный API.

Python 3000

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

Pythonic

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

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

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

for piece in food:
    print(piece)
qualified name

Точечная запись, показывающая «путь» от глобальной области видимости модуля к классу, функции или методу, определённому в этом модуле, как определено в PEP 3155. Для функций и классов верхнего уровня полное имя совпадает с именем объекта:

>>> class C:
...     class D:
...         def meth(self):
...             pass
...
>>> C.__qualname__
'C'
>>> C.D.__qualname__
'C.D'
>>> C.D.meth.__qualname__
'C.D.meth'

При использовании для ссылки на модули, полное имя означает весь точечный путь к модулю, включая любые родительские пакеты, например, email.mime.text:

>>> import email.mime.text
>>> email.mime.text.__name__
'email.mime.text'
reference count

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

regular package

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

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

__slots__

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

sequence

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

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

set comprehension
END_OF_DOCUMENT_MARKER

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

single dispatch

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

slice

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

special method

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

statement

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

static type checker

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

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.

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

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

Zen of Python

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

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

Spec-Zone.ru

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