Словарь терминов
-
>>> -
Стандартный пригласительный знак Python в интерактивной оболочке. Часто используется в примерах кода, которые можно выполнить интерактивно в интерпретаторе.
-
... -
Может относиться к:
- Стандартному пригласительному знаку Python в интерактивной оболочке при вводе кода для отступов, когда внутри пары соответствующих левых и правых разделителей (скобки, квадратные скобки, фигурные скобки или тройные кавычки) или после указания декоратора.
- Встроенной константе
Ellipsis.
-
2to3 -
Инструмент, пытающийся преобразовать код Python 2.x в код Python 3.x, обрабатывая большинство несовместимостей, которые могут быть обнаружены при разборе исходного кода и обходе дерева разбора.
2to3 доступен в стандартной библиотеке как
lib2to3; самостоятельная точка входа предоставляется какTools/scripts/2to3. Смотрите 2to3 — Автоматическое преобразование кода Python 2 в 3. -
abstract base class -
Абстрактные базовые классы дополняют подход утиной типизации, предоставляя способ определения интерфейсов, когда другие методы, такие как
hasattr(), были бы неуклюжими или несущественно неправильными (например, с магическими методами). ABC вводят виртуальные подклассы, которые не наследуются от класса, но все же распознаютсяisinstance()иissubclass(); см. документацию модуляabc. Python поставляется со многими встроенными ABC для структур данных (в модулеcollections.abc), чисел (в модулеnumbers), потоков (в модулеio), поиска импортов и загрузчиков (в модулеimportlib.abc). Вы можете создавать собственные ABC с помощью модуляabc. -
annotation -
Метка, связанная с переменной, атрибутом класса или параметром или возвращаемым значением функции, используемая по соглашению в качестве подсказки типа.
Аннотации локальных переменных не могут быть доступны во время выполнения, но аннотации глобальных переменных, атрибутов класса и функций хранятся в специальном атрибуте
__annotations__модулей, классов и функций соответственно.См. аннотацию переменной, аннотацию функции, PEP 484 и PEP 526, которые описывают эту функциональность. Также см. Рекомендации по работе с аннотациями для рекомендаций по работе с аннотациями.
-
argument -
Значение, переданное функции (или методу) при вызове функции. Существует два типа аргументов:
-
именованный аргумент: аргумент, предваряемый идентификатором (например,
name=) в вызове функции или переданный как значение в словаре, предваряемом**. Например,3и5— оба именованных аргумента в следующих вызовахcomplex():complex(real=3, imag=5) complex(**{'real': 3, 'imag': 5}) -
позиционный аргумент: аргумент, который не является именованным. Позиционные аргументы могут располагаться в начале списка аргументов и/или передаваться как элементы итерируемого объекта, предваряемые
*. Например,3и5— оба позиционных аргумента в следующих вызовах:complex(3, 5) complex(*(3, 5))
Аргументы присваиваются именованным локальным переменным в теле функции. Правила этого присваивания см. в разделе Вызовы. Синтаксически любое выражение может использоваться для представления аргумента; вычисленное значение присваивается локальной переменной.
См. также запись в глоссарии параметр, вопрос в FAQ о разнице между аргументами и параметрами и PEP 362.
-
-
asynchronous context manager -
Объект, который управляет средой, видимой в операторе
async with, определением методов__aenter__()и__aexit__(). Введено в PEP 492. -
asynchronous generator -
Функция, которая возвращает итератор асинхронного генератора. Она похожа на функцию корутины, определенную с помощью
async def, за исключением того, что она содержит выраженияyieldдля создания последовательности значений, используемых в циклеasync for.Обычно относится к функции асинхронного генератора, но в некоторых контекстах может относиться к итератору асинхронного генератора. В случаях, когда предполагаемый смысл не ясен, использование полных терминов позволяет избежать двусмысленности.
Функция асинхронного генератора может содержать выражения
await, а также операторыasync forиasync with. -
asynchronous generator iterator -
Объект, созданный функцией асинхронного генератора.
Это асинхронный итератор, который при вызове с использованием метода
__anext__()возвращает асинхронный объект, который выполнит тело функции асинхронного генератора до следующего выражения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 -
Благожелательный диктатор на всю жизнь, также известный как Гвидо ван Россум, создатель 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, ...)
Функция функция и, в расширенном смысле, метод метод являются вызываемыми. Экземпляр класса, реализующий метод
__call__(), также является вызываемым. -
callback -
Подпрограммная функция, которая передаётся в качестве аргумента для выполнения в какой-то момент в будущем.
-
class -
Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.
-
class variable -
Переменная, определённая в классе и предназначенная для изменения только на уровне класса (т.е., не в экземпляре класса).
-
coercion -
Неявное преобразование экземпляра одного типа в другой во время операции, которая включает два аргумента одного и того же типа. Например,
int(3.15)преобразует число с плавающей точкой в целое число3, но в3+4.5, каждый аргумент имеет разный тип (целое число и число с плавающей точкой), и оба должны быть преобразованы в один и тот же тип, прежде чем их можно будет сложить, иначе будет выброшено исключениеTypeError. Без приведения типов все аргументы даже совместимых типов должны были бы быть приведены к одному значению программистом, например,float(3)+4.5вместо просто3+4.5. -
complex number -
Расширение знакомой системы действительных чисел, в котором все числа выражаются как сумма действительной и мнимой частей. Мнимые числа являются действительными кратными мнимой единице (квадратному корню из
-1), часто записываемым какiв математике илиjв технике. Python имеет встроенную поддержку комплексных чисел, которые записываются с помощью последней записи; мнимая часть записывается с помощьюjсуффикса, например,3+1j. Для доступа к комплексным аналогам модуляmathиспользуйтеcmath. Использование комплексных чисел является довольно сложным математическим инструментом. Если вам не нужно, то, почти наверняка, можете их игнорировать. -
context manager -
Объект, который управляет средой, видимой в операторе
with, определяя методы__enter__()и__exit__(). См. PEP 343. -
context variable -
Переменная, которая может иметь разные значения в зависимости от контекста. Это похоже на хранилище локальных переменных потока, в котором каждый поток выполнения может иметь разное значение для переменной. Однако с контекстными переменными может быть несколько контекстов в одном потоке выполнения, и основное использование контекстных переменных — отслеживание переменных в асинхронных параллельных задачах. См.
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 для декодирования байтов из операционной системы и кодирования Юникода в операционную систему.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не обеспечивает этой гарантии, функции API могут вызывать
UnicodeError.Функции
sys.getfilesystemencoding()иsys.getfilesystemencodeerrors()могут использоваться для получения кодировки и обработчика ошибок файловой системы.Кодировка и обработчик ошибок файловой системы настраиваются во время запуска Python функцией
PyConfig_Read(): см. членыfilesystem_encodingиfilesystem_errorsклассаPyConfig.См. также кодировку локали.
-
finder -
Объект, пытающийся найти загрузчик модуля, который импортируется.
Начиная с Python 3.3, существуют два типа поиска: поисковики мета-пути для использования с
sys.meta_path, и поисковики элементов пути для использования сsys.path_hooks.См. PEP 302, PEP 420 и PEP 451 для более подробной информации.
-
floor division -
Математическое деление, которое округляет вниз до ближайшего целого числа. Оператор целочисленного деления — это
//. Например, выражение11 // 4вычисляет2в отличие от2.75возвращаемого плавающей точкой истинного деления. Обратите внимание, что(-11) // 4равно-3, поскольку это-2.75округляется вниз. См. PEP 238. -
function -
Последовательность операторов, которая возвращает некоторое значение вызывающей стороне. Она также может принимать ноль или более аргументов, которые могут использоваться в выполнении тела. См. также параметр, метод и раздел Определения функций.
-
function annotation -
Аннотация аннотации параметра или возвращаемого значения функции.
Аннотации функций обычно используются для намеков на типы: например, ожидается, что эта функция примет два
intаргумента и также ожидается, что она вернетintзначение:def sum_two_numbers(a: int, b: int) -> int: return a + b
Синтаксис аннотаций функций объясняется в разделе Определения функций.
См. аннотацию переменной и PEP 484, которые описывают эту функциональность. Также см. Рекомендации по использованию аннотаций для получения рекомендаций по работе с аннотациями.
-
__future__ -
Оператор future,
from __future__ import <feature>, указывает компилятору на компиляцию текущего модуля с использованием синтаксиса или семантики, которые станут стандартными в будущей версии Python. Модуль__future__документирует возможные значения feature. Импортировав этот модуль и вычислив его переменные, вы сможете увидеть, когда новая функция была впервые добавлена в язык и когда она станет (или стала) стандартной:>>> import __future__ >>> __future__.division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
-
garbage collection -
Процесс освобождения памяти, когда она больше не используется. Python выполняет сборку мусора с помощью подсчета ссылок и циклического сборщика мусора, который может обнаруживать и разрывать циклы ссылок. Сборщик мусора можно контролировать с помощью модуля
gc. -
generator -
Функция, которая возвращает генератор итератор. Она выглядит как обычная функция, за исключением того, что она содержит выражения
yieldдля создания последовательности значений, которые можно использовать в цикле for или получать по одному с помощью функцииnext().Обычно относится к генераторной функции, но в некоторых контекстах может относиться к генераторному итератору. В случаях, когда предполагаемый смысл не ясен, использование полных терминов избегает неоднозначности.
-
generator iterator -
Объект, созданный генераторной функцией.
Каждое
yieldвременно приостанавливает обработку, запоминая состояние выполнения (включая локальные переменные и ожидаемые операторы try). Когда генераторный итератор возобновляется, он продолжает с того места, где остановился (в отличие от функций, которые начинаются с нуля при каждом вызове). -
generator expression -
Выражение, возвращающее итератор. Она выглядит как обычное выражение, за которым следует
for-оператор, определяющий переменную цикла, диапазон и необязательныйif-оператор. Объединенное выражение генерирует значения для функции, содержащей их:>>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81 285
-
generic function -
Функция, состоящая из нескольких функций, реализующих одну и ту же операцию для разных типов. Которая реализация должна использоваться во время вызова определяется алгоритмом диспетчеризации.
См. также запись глоссария однодиспетчирование, декоратор
functools.singledispatch()и PEP 443. -
generic type -
Тип, который может быть параметризован; обычно контейнерный класс, такой как
listилиdict. Используется для намеков на типы и аннотаций.Для получения более подробной информации см. типы общих псевдонимов, PEP 483, PEP 484, PEP 585 и модуль
typing. -
GIL -
global interpreter lock
-
Механизм, используемый интерпретатором CPython для обеспечения того, чтобы только один поток выполнял Python-байткод байткод за раз. Это упрощает реализацию CPython, делая модель объектов (включая критически важные встроенные типы, такие как
dict) неявным образом безопасными от одновременного доступа. Блокировка всего интерпретатора упрощает многопоточность интерпретатора, но в ущерб большей части параллелизма, предоставляемого многопроцессорными машинами.Однако некоторые модули расширений, стандартные или сторонние, разработаны таким образом, чтобы освобождать GIL при выполнении вычислительно сложных задач, таких как сжатие или хеширование. Кроме того, GIL всегда освобождается при выполнении ввода-вывода.
Предыдущие попытки создать интерпретатор с «свободными потоками» (который блокирует общие данные с гораздо большей точностью) не увенчались успехом, поскольку производительность страдала в общем случае однопроцессорных систем. Считается, что преодоление этой проблемы производительности сделает реализацию намного сложнее и, следовательно, дороже в обслуживании.
-
hash-based pyc -
Файл кэша байткода, использующий хеш, а не время последнего изменения соответствующего исходного файла, для определения его валидности. См. Отмена кэширования байткода.
-
hashable -
Объект является хешируемым, если у него есть значение хеша, которое никогда не меняется за время его существования (он нуждается в
__hash__()методе), и его можно сравнивать с другими объектами (он нуждается в__eq__()методе). Хешируемые объекты, которые сравниваются как равные, должны иметь одинаковое значение хеша.Хешируемость делает объект пригодным для использования в качестве ключа словаря и элемента множества, поскольку эти структуры данных используют значение хеша во внутренней работе.
Большинство неизменяемых встроенных объектов Python хешируемы; изменяемые контейнеры (такие как списки или словари) не хешируемы; неизменяемые контейнеры (такие как кортежи и замороженные множества) хешируемы только в том случае, если их элементы хешируемы. Объекты, которые являются экземплярами определяемых пользователем классов, по умолчанию хешируемы. Они все сравниваются как неравные (кроме себя самих), и их значение хеша выводится из их
id(). -
IDLE -
Интегрированная среда разработки и обучения для Python. IDLE — это базовая среда редактора и интерпретатора, которая поставляется со стандартным дистрибутивом Python.
-
immutable -
Объект с фиксированным значением. К неизменяемым объектам относятся числа, строки и кортежи. Такой объект нельзя изменить. Если нужно сохранить другое значение, необходимо создать новый объект. Они играют важную роль в местах, где необходимо постоянное значение хеша, например, в качестве ключа в словаре.
-
import path -
Список расположений (или элементов пути), которые просматриваются поисковиком по пути при поиске модулей для импорта. Во время импорта этот список расположений обычно берется из
sys.path, но для подпакетов он также может поступать из__path__атрибута родительского пакета. -
importing -
Процесс, с помощью которого код Python в одном модуле становится доступным коду Python в другом модуле.
-
importer -
Объект, который как находит, так и загружает модуль; как объект поисковика, так и загрузчика.
-
interactive -
Python имеет интерактивный интерпретатор, что означает, что вы можете вводить операторы и выражения в приглашении интерпретатора, немедленно их выполнять и видеть результаты. Просто запустите
pythonбез аргументов (возможно, выбрав его из главного меню вашего компьютера). Это очень мощный способ проверить новые идеи или исследовать модули и пакеты (помнитеhelp(x)). -
interpreted -
Python — интерпретируемый язык, в отличие от компилируемого, хотя различие может быть размытым из-за наличия компилятора байткода. Это означает, что исходные файлы можно запускать напрямую без явного создания исполняемого файла, который затем запускается. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя программы на них, как правило, выполняются медленнее. См. также интерактивный.
-
interpreter shutdown -
Когда интерпретатор Python попрошен завершить работу, он переходит в особую фазу, где постепенно освобождает все выделенные ресурсы, такие как модули и различные критически важные внутренние структуры. Он также выполняет несколько вызовов сборщика мусора. Это может вызвать выполнение кода в пользовательских деструкторах или вызовах weakref. Код, выполняемый во время завершения работы интерпретатора, может столкнуться с различными исключениями, так как ресурсы, на которые он полагается, могут больше не работать (распространенные примеры — модули библиотек или механизм предупреждений).
Основная причина завершения работы интерпретатора заключается в том, что модуль
__main__или выполняемый скрипт завершили выполнение. -
iterable -
Объект, способный возвращать свои члены по одному. Примерами итерируемых объектов являются все типы последовательностей (такие как
list,strиtuple) и некоторые нетипы последовательностей, такие какdict, объекты файлов и объекты любых классов, которые вы определяете с__iter__()методом или__getitem__()методом, реализующим семантику последовательности.Итерируемые объекты можно использовать в цикле
forи во многих других местах, где требуется последовательность (zip(),map(), …). При передаче итерируемого объекта в качестве аргумента встроенной функцииiter()она возвращает итератор для объекта. Этот итератор предназначен для одного прохода по набору значений. При работе с итерируемыми объектами обычно нет необходимости вызыватьiter()или работать с объектами итераторов самостоятельно. Операторforделает это автоматически, создавая временную безымянную переменную для хранения итератора на время цикла. См. также итератор, последовательность и генератор. -
iterator -
Объект, представляющий поток данных. Повторные вызовы метода
__next__()итератора (или передача его в встроенную функциюnext()) возвращают последовательные элементы в потоке. При отсутствии дополнительных данных возникает исключениеStopIterationвместо этого. В этот момент объект итератора исчерпан, и любые дальнейшие вызовы его метода__next__()просто повторно поднимают исключениеStopIteration. Итераторы должны иметь__iter__()метод, который возвращает сам объект итератора, поэтому каждый итератор также является итерируемым и может быть использован в большинстве мест, где принимаются другие итерируемые объекты. Одно заметное исключение — код, который пытается выполнить несколько проходов итерации. Объект контейнера (например,list) создает новый итератор каждый раз, когда вы передаете его функцииiter()или используете его в циклеfor. Попытка сделать это с итератором вернет тот же исчерпанный объект итератора, используемый в предыдущем проходе итерации, что делает его похожим на пустой контейнер.Более подробную информацию можно найти в Типы итераторов.
Подробность реализации CPython: CPython не последовательно применяет требование, чтобы итератор определял
__iter__(). -
key function
-
Функция ключа или функция сортировки — это вызываемый объект, возвращающий значение, используемое для сортировки или упорядочения. Например,
locale.strxfrm()используется для создания ключа сортировки, учитывающего правила сортировки, зависящие от локали.Ряд инструментов в Python принимают функции ключа, чтобы контролировать порядок элементов или их группировку. К ним относятся
min(),max(),sorted(),list.sort(),heapq.merge(),heapq.nsmallest(),heapq.nlargest()иitertools.groupby().Существует несколько способов создания функции ключа. Например, метод
str.lower()может служить функцией ключа для сортировки без учета регистра. В качестве альтернативы, функция ключа может быть создана с помощью выраженияlambda, например,lambda r: (r[0], r[2]). Кроме того, модульoperatorпредоставляет три конструктора функций ключа:attrgetter(),itemgetter()иmethodcaller(). См. раздел Сортировка: руководство для примеров создания и использования функций ключа. -
keyword argument -
См. аргумент.
-
lambda -
Анонимная встроенная функция, состоящая из одного выражения, которое вычисляется при вызове функции. Синтаксис для создания лямбда-функции:
lambda [parameters]: expression -
LBYL -
Проверь прежде, чем прыгать. Этот стиль программирования явно проверяет предусловия перед выполнением вызовов или обращений. Этот стиль отличается от подхода EAFP и характеризуется наличием многих инструкций
if.В многопоточной среде подход LBYL может привести к возникновению гонки между «проверкой» и «прыжком». Например, код
if key in mapping: return mapping[key]может завершиться ошибкой, если другой поток удалит ключ из словаря после проверки, но до доступа. Эту проблему можно решить с помощью блокировок или использования подхода EAFP. -
locale encoding -
В Unix — это кодировка локали LC_CTYPE. Ее можно установить с помощью
locale.setlocale(locale.LC_CTYPE, new_locale).В Windows — это кодовая страница ANSI (например,
cp1252).locale.getpreferredencoding(False)используется для получения кодировки локали.Python использует кодировку и обработчик ошибок файловой системы для преобразования имен файлов Unicode в имена файлов в байтах.
-
list -
Встроенная последовательность Python. Несмотря на название, она больше похожа на массив в других языках, чем на связанный список, поскольку доступ к элементам осуществляется за O(1).
-
list comprehension -
Компактный способ обработки всех или части элементов последовательности и возвращения списка с результатами.
result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]генерирует список строк, содержащих четные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Операторifявляется необязательным. Если он опущен, обрабатываются все элементы вrange(256). -
loader -
Объект, загружающий модуль. Он должен определить метод с именем
load_module(). Загрузчик обычно возвращается поисковиком поисковиком. Подробнее см. PEP 302 иimportlib.abc.Loaderдля абстрактного базового класса. -
magic method -
Неформальный синоним для специального метода.
-
mapping -
Объект контейнера, поддерживающий произвольный поиск по ключам и реализующий методы, указанные в
MappingилиMutableMappingабстрактных базовых классах. Примеры включаютdict,collections.defaultdict,collections.OrderedDictиcollections.Counter. -
meta path finder -
Поисковик, возвращаемый результатом поиска в
sys.meta_path. Поисковики метапутей связаны, но отличаются от поисковиков элементов пути.См.
importlib.abc.MetaPathFinderдля методов, которые реализуют поисковики метапутей. -
metaclass -
Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за использование этих трех аргументов для создания класса. Большинство языков объектно-ориентированного программирования предоставляют реализацию по умолчанию. Что делает Python особенным, так это возможность создавать пользовательские метаклассы. Большинству пользователей этот инструмент не нужен, но когда возникает необходимость, метаклассы могут предоставить мощные и элегантные решения. Они используются для ведения журнала доступа к атрибутам, добавления потоковой безопасности, отслеживания создания объектов, реализации одиночных экземпляров и многих других задач.
Дополнительную информацию можно найти в Метаклассы.
-
method -
Функция, определенная внутри тела класса. Если она вызывается как атрибут экземпляра этого класса, метод получит объект экземпляра в качестве первого аргумента (он обычно называется
self). См. функцию и вложенную область видимости. -
method resolution order -
Порядок разрешения методов — порядок, в котором проверяются базовые классы при поиске члена. Подробности алгоритма, используемого интерпретатором Python начиная с версии 2.3, можно найти в Порядок разрешения методов Python 2.3.
-
module -
Объект, служащий организационной единицей кода Python. Модули имеют пространство имен, содержащее произвольные объекты Python. Модули загружаются в Python в процессе импорта.
См. также пакет.
-
module spec -
Пространство имен, содержащее информацию об импорте, используемую для загрузки модуля. Экземпляр
importlib.machinery.ModuleSpec. -
MRO -
mutable -
Изменяемые объекты могут изменять свое значение, но сохраняют свой
id(). См. также неизменяемый. -
named tuple
-
Термин «именованный кортеж» относится к любому типу или классу, который наследуется от кортежа и чьи индексируемые элементы также доступны с использованием именованных атрибутов. Тип или класс может также иметь другие особенности.
Несколько встроенных типов являются именованными кортежами, включая значения, возвращаемые
time.localtime()иos.stat(). Другой пример —sys.float_info:>>> sys.float_info[1] # indexed access 1024 >>> sys.float_info.max_exp # named field access 1024 >>> isinstance(sys.float_info, tuple) # kind of tuple True
Некоторые именованные кортежи являются встроенными типами (например, приведенные выше примеры). В качестве альтернативы, именованный кортеж можно создать из обычного определения класса, которое наследуется от
tupleи которое определяет именованные поля. Такой класс можно написать вручную или создать с помощью функции-фабрикиcollections.namedtuple(). Последний метод также добавляет некоторые дополнительные методы, которых может не быть в именованных кортежах, написанных вручную или встроенных. -
namespace -
Место, где хранится переменная. Пространства имён реализуются как словари. Существуют локальные, глобальные и встроенные пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён поддерживают модульность, предотвращая конфликты имён. Например, функции
builtins.openиos.open()различаются своими пространствами имён. Пространства имён также улучшают читаемость и поддерживаемость, делая ясным, какой модуль реализует функцию. Например, записьrandom.seed()илиitertools.islice()делает ясным, что эти функции реализуются модулямиrandomиitertoolsсоответственно. -
namespace package -
PEP 420 пакет, который служит только контейнером для подпакетов. Пространства имён пакетов могут не иметь физического представления и, в частности, не похожи на обычный пакет, потому что у них нет файла
__init__.py.См. также модуль.
-
nested scope -
Возможность обращения к переменной во внешнем определении. Например, функция, определённая внутри другой функции, может ссылаться на переменные во внешней функции. Обратите внимание, что вложенные области видимости по умолчанию работают только для ссылки, а не для присваивания. Локальные переменные как читают, так и записывают во внутреннем пространстве имён. Аналогично, глобальные переменные читают и записывают в глобальное пространство имён.
nonlocalпозволяет записывать во внешние области видимости. -
new-style class -
Старое название разновидности классов, которая сейчас используется для всех объектов классов. В более ранних версиях Python только классы нового стиля могли использовать новые, универсальные возможности Python, такие как
__slots__, дескрипторы, свойства,__getattribute__(), методы класса и статические методы. -
object -
Любые данные со состоянием (атрибуты или значение) и определённым поведением (методы). Также базовый класс любого класса нового стиля.
-
package -
Модуль Python, который может содержать подмодули или рекурсивно, подпакеты. Технически, пакет — это Python-модуль с атрибутом
__path__.См. также обычный пакет и пакет пространства имён.
-
parameter -
Именованный элемент в определении функции (или метода), который определяет аргумент (или в некоторых случаях, аргументы), которые может принять функция. Существует пять видов параметров:
-
позиционный или ключевой: определяет аргумент, который может быть передан либо позиционно, либо в качестве ключевого аргумента. Это стандартный тип параметра, например, foo и bar в следующем:
def func(foo, bar=None): ...
-
только позиционный: определяет аргумент, который может быть предоставлен только по позиции. Позиционные-только параметры могут быть определены, включив символ
/в список параметров определения функции после них, например, posonly1 и posonly2 в следующем:def func(posonly1, posonly2, /, positional_or_keyword): ...
-
только ключевой: определяет аргумент, который может быть предоставлен только по ключевому слову. Ключевые-только параметры могут быть определены, включив один параметр с произвольным количеством позиционных аргументов или просто
*в список параметров определения функции перед ними, например, kw_only1 и kw_only2 в следующем:def func(arg, *, kw_only1, kw_only2): ...
-
с произвольным числом позиционных аргументов: определяет, что может быть предоставлена произвольная последовательность позиционных аргументов (в дополнение к любым позиционным аргументам, уже принятым другими параметрами). Такой параметр может быть определён путём добавления префикса * к имени параметра, например, args в следующем:
def func(*args, **kwargs): ...
- с произвольным числом ключевых аргументов: определяет, что может быть предоставлено произвольное количество ключевых аргументов (в дополнение к любым ключевым аргументам, уже принятым другими параметрами). Такой параметр может быть определён путём добавления префикса ** к имени параметра, например, kwargs в приведённом выше примере.
Параметры могут определять как необязательные, так и обязательные аргументы, а также значения по умолчанию для некоторых необязательных аргументов.
См. также запись в глоссарии аргумент, вопрос в FAQ о разнице между аргументами и параметрами, класс
inspect.Parameter, раздел «Определения функций» в справочнике и PEP 362. -
-
path entry -
Единственное местоположение в пути импорта, которое использует поисковик на основе пути для поиска модулей для импорта.
-
path entry finder -
Поисковик finder, возвращаемый вызываемым объектом в
sys.path_hooks(т.е. обработчиком элемента пути), который знает, как найти модули, учитывая элемент пути.См.
importlib.abc.PathEntryFinderдля методов, реализуемых поисковиками элементов пути. -
path entry hook -
Вызываемый объект в списке
sys.path_hook, который возвращает поисковик элемента пути, если он знает, как найти модули в определённом элементе пути. -
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 должен содержать краткое техническое описание и обоснование предлагаемых функций.
PEPs предназначены для того, чтобы быть основными механизмами для предложения основных новых функций, сбора отзывов сообщества по какому-либо вопросу и документирования принятых решений по проектированию Python. Автор PEP отвечает за создание консенсуса в сообществе и документирование разногласий.
См. PEP 1.
-
portion -
Набор файлов в одном каталоге (возможно, хранящихся в файле zip), которые вносят вклад в пакет пространства имён, как определено в PEP 420.
-
positional argument -
См. аргумент.
-
provisional 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. -
strong reference
-
В C API Python, сильная ссылка — это ссылка на объект, который принадлежит коду, удерживающему ссылку. Сильная ссылка создаётся вызовом
Py_INCREF(), а освобождается вызовомPy_DECREF(), когда ссылка удаляется.Функция
Py_NewRef()может использоваться для создания сильной ссылки на объект. Обычно функцияPy_DECREF()должна вызываться на сильной ссылке перед выходом из области видимости сильной ссылки, чтобы избежать утечки ссылки.См. также ссылку-заём.
- Кодировка текста
-
Строка в Python представляет собой последовательность точек кода Юникода (в диапазоне
U+0000–U+10FFFF). Для хранения или передачи строки она должна быть сериализована как последовательность байтов.Сериализация строки в последовательность байтов называется «кодированием», а восстановление строки из последовательности байтов — «декодированием».
Существует множество различных кодировок текста, которые в совокупности называются «кодировками текста». Подробнее см. кодеки.
- Текстовый файл
-
Объект файла, способный читать и записывать объекты
str. Часто текстовый файл фактически получает доступ к потоку данных байтового типа и автоматически обрабатывает кодировку текста. Примерами текстовых файлов являются файлы, открытые в текстовом режиме ('r'или'w'),sys.stdin,sys.stdoutи экземплярыio.StringIO.См. также бинарный файл для объекта файла, способного читать и записывать объекты-подобные байтам.
- Строка в тройных кавычках
-
Строка, ограниченная тремя экземплярами кавычек (”) или апострофов (‘). Хотя они не предоставляют функциональности, отсутствующей в строках в одинарных кавычках, они полезны по нескольким причинам. Они позволяют включать неэкранированные одинарные и двойные кавычки внутри строки, и могут охватывать несколько строк без использования символа продолжения, что делает их особенно полезными при написании строковых документов.
- Тип
-
Тип объекта Python определяет, какой это объект; каждый объект имеет тип. Тип объекта доступен как его атрибут
__class__или может быть получен с помощьюtype(obj). - Псевдоним типа
-
Синоним типа, созданный путём присвоения типа идентификатору.
Псевдонимы типов полезны для упрощения намеков на типы. Например:
def remove_gray_shades( colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]: passможет быть сделано более читаемым так:
Color = tuple[int, int, int] def remove_gray_shades(colors: list[Color]) -> list[Color]: passСм.
typingи PEP 484, которые описывают эту функциональность. - Подсказка типа
-
Аннотация, указывающая ожидаемый тип для переменной, атрибута класса или параметра/значения возврата функции.
Подсказки типов необязательны и не применяются Python, но они полезны для инструментов статического анализа типов и помогают IDE в автодополнении кода и рефакторинге.
Подсказки типов для глобальных переменных, атрибутов классов и функций, но не локальных переменных, доступны с помощью
typing.get_type_hints().См.
typingи PEP 484, которые описывают эту функциональность. - Универсальные символы новой строки
-
Способ интерпретации текстовых потоков, в котором все следующие воспринимаются как конец строки: конвенция Unix
'\n', конвенция Windows'\r\n', и старая конвенция Macintosh'\r'. См. PEP 278 и PEP 3116, а такжеbytes.splitlines()для дополнительного использования. - Аннотация переменной
-
Аннотация переменной или атрибута класса.
При аннотировании переменной или атрибута класса присваивание необязательно:
class C: field: 'annotation'Аннотации переменных обычно используются для подсказок типа: например, эта переменная ожидает значения типа
int:count: int = 0
Синтаксис аннотаций переменных подробно описан в разделе Аннотированные операторы присваивания.
См. аннотацию функции, PEP 484 и PEP 526, которые описывают эту функциональность. Также см. Рекомендации по аннотациям для лучших практик работы с аннотациями.
- Виртуальная среда
-
Изолированная среда выполнения, позволяющая пользователям и приложениям Python устанавливать и обновлять пакеты дистрибутива Python без вмешательства в работу других приложений Python, работающих в той же системе.
См. также
venv. - Виртуальная машина
-
Вычислительная машина, полностью определённая в программном обеспечении. Виртуальная машина Python выполняет байт-код, выданный компилятором байт-кода.
- Философия Python
-
Список принципов и философии проектирования Python, полезных для понимания и использования языка. Список можно найти, введя «
import this» в интерактивном режиме.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.10/glossary.html