Spec-Zone.ru › Python 3.12

Глоссарий

>>>

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

...

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

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

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

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

abstract base class

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

annotation

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

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

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

argument

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

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

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

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

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

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

asynchronous context manager

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

asynchronous generator

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

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

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

asynchronous generator iterator

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

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

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

asynchronous iterable

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

asynchronous iterator

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

attribute

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

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

awaitable

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

BDFL

Великодушный пожизненный диктатор (Benevolent Dictator For Life), то есть Гвидо ван Россум, создатель Python.

binary file

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

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

borrowed reference

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

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

bytes-like object

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

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

bytecode

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

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

callable

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

callable(argument1, argument2, 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

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

contiguous

Буфер считается непрерывным, если он является либо C-непрерывным, либо непрерывным по Фортрану. Буферы нулевой размерности являются 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 в словаре класса объекта 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.

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.

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

list

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

list comprehension

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

loader

Объект, который загружает модуль. Для реализации интерфейса 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

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

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

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(), чтобы получить счётчик ссылок определённого объекта.

regular package

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

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

__slots__

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

sequence

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

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

set comprehension

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

single dispatch

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

slice

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

soft deprecated

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

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

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

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

Spec-Zone.ru

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