Глоссарий
-
>>> -
Приглашение по умолчанию интерактивной оболочки 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иbytearrayтипаmemoryview. Для других операций необходимо, чтобы двоичные данные хранились в неизменяемых объектах («неизменяемых объектах, подобных bytes»); примерами служатbytesиbytesтипаmemoryview. -
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 -
Стиль программирования, при котором тип объекта не проверяется для определения наличия у него нужного интерфейса; вместо этого метод или атрибут просто вызывается или используется («Если оно выглядит как утка и крякает как утка, значит, это утка»). Благодаря акценту на интерфейсах, а не на конкретных типах, хорошо спроектированный код становится гибче, позволяя использовать полиморфную подстановку. При утиной типизации избегают проверок с помощью
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 -
Объект, который пытается найти загрузчик импортируемого модуля.
Начиная с Python 3.3 существуют два типа искателей: искателей метапути, используемые с
sys.meta_path, и искатели элементов пути, используемые сsys.path_hooks. -
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 хешируемы; изменяемые контейнеры (например, списки или словари) — нет; неизменяемые контейнеры (например, кортежи и frozenset) хешируемы, только если хешируемы их элементы. Объекты, являющиеся экземплярами пользовательских классов, по умолчанию хешируемы. Все они не равны друг другу (кроме сравнения с самими собой), а их хеш-значение вычисляется на основе их
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]может завершиться ошибкой, если другой поток удалит 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
-
Объект, загружающий модуль. Он должен определять метод с именем
load_module(). Загрузчик обычно возвращается средством поиска. Подробности см. в PEP 302, а базовыйimportlib.abc.Loader— в абстрактном базовом классе. -
locale encoding -
В Unix это кодировка локали LC_CTYPE. Её можно задать с помощью
locale.setlocale(locale.LC_CTYPE, new_locale).В Windows это кодовая страница ANSI (например,
"cp1252").В Android и VxWorks Python использует
"utf-8"в качестве кодировки локали.Для получения кодировки локали можно использовать
locale.getencoding(). -
magic method -
Неофициальный синоним специального метода.
-
mapping -
Объект-контейнер, поддерживающий произвольный поиск по ключам и реализующий методы, заданные в
collections.abc.Mappingилиcollections.abc.MutableMappingабстрактных базовых классах. Примеры:dict,collections.defaultdict,collections.OrderedDictиcollections.Counter. -
meta path finder -
sys.meta_pathищет и возвращает средство поиска. Средства поиска по метапути связаны со средствами поиска по элементу пути, но отличаются от них.Методы, реализуемые средствами поиска по метапути, описаны в
importlib.abc.MetaPathFinder. -
metaclass -
Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за создание класса из этих трёх аргументов. В большинстве объектно-ориентированных языков программирования предусмотрена реализация по умолчанию. Особенность Python заключается в возможности создавать пользовательские метаклассы. Большинству пользователей этот инструмент не нужен, но когда он необходим, метаклассы позволяют находить мощные и элегантные решения. Их использовали для ведения журнала доступа к атрибутам, добавления потокобезопасности, отслеживания создания объектов, реализации одиночек и решения многих других задач.
Дополнительные сведения приведены в разделе Метаклассы.
-
method -
Функция, определённая в теле класса. При вызове в качестве атрибута экземпляра этого класса метод получает объект экземпляра в качестве первого аргумента (обычно называемого
self). См. функцию и вложенную область видимости. -
method resolution order -
Порядок разрешения методов — порядок, в котором при поиске элемента просматриваются базовые классы. Подробное описание алгоритма, используемого интерпретатором Python начиная с версии 2.3, см. в статье Порядок разрешения методов в Python 2.3.
-
module -
Объект, служащий организационной единицей кода Python. Модули имеют пространство имён, содержащее произвольные объекты Python. Модули загружаются в Python в процессе импорта.
См. также пакет.
-
module spec -
Пространство имён, содержащее сведения, связанные с импортом и используемые для загрузки модуля. Экземпляр
importlib.machinery.ModuleSpec. -
MRO -
mutable -
Изменяемые объекты могут менять своё значение, сохраняя при этом свой
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 -
пакет 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 в примере выше.
Параметры могут задавать как необязательные, так и обязательные аргументы, а также значения по умолчанию для некоторых необязательных аргументов.
См. также словарную статью аргумент, ответ на часто задаваемый вопрос о различии между аргументами и параметрами, класс
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. -
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 — это последовательность кодовых точек Unicode (в диапазоне
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 -
type hint -
Аннотация, указывающая ожидаемый тип переменной, атрибута класса, параметра функции или возвращаемого значения.
Подсказки типов являются необязательными и не проверяются Python, но полезны для статических анализаторов типов. Они также могут помочь IDE с автодополнением кода и рефакторингом.
Подсказки типов глобальных переменных, атрибутов классов и функций, но не локальных переменных, можно получить с помощью
typing.get_type_hints(). -
universal newlines -
Способ интерпретации текстовых потоков, при котором в качестве конца строки распознаются все следующие обозначения: символ конца строки Unix
'\n', обозначение Windows'\r\n'и старое обозначение Macintosh'\r'. См. PEP 278 и PEP 3116, а такжеbytes.splitlines(), где описано ещё одно применение. -
variable annotation -
Аннотация переменной или атрибута класса.
При аннотировании переменной или атрибута класса присваивание необязательно:
class C: field: 'annotation'Аннотации переменных обычно используются для подсказок типов: например, предполагается, что эта переменная будет содержать значения типа
int:count: int = 0
Синтаксис аннотаций переменных описан в разделе Операторы аннотированного присваивания.
См. аннотация функции, PEP 484 и PEP 526, где описана эта функциональность. Рекомендации по работе с аннотациями см. также в разделе Рекомендации по использованию аннотаций.
-
virtual environment -
Среда выполнения с совместной изоляцией, позволяющая пользователям и приложениям Python устанавливать и обновлять пакеты дистрибутивов Python, не влияя на работу других приложений Python, запущенных в той же системе.
См. также
venv. -
virtual machine -
Компьютер, полностью определённый программным обеспечением. Виртуальная машина Python выполняет байткод, созданный компилятором байткода.
-
Zen of Python -
Перечень принципов проектирования и философских идей Python, полезных для понимания языка и работы с ним. Этот перечень можно вывести, введя «
import this» в интерактивной оболочке.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/glossary.html