Глоссарий
-
>>> -
Приглашение интерактивной оболочки 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(). Обычно загрузчик возвращает поисковик. См. также: -
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 не планируется удалять, и предупреждения выдаваться не будут.
-
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 -
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.12/glossary.html