Глоссарий
-
>>> -
По умолчанию интерпретатор 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__()должен возвращать объект awaitable.async forразрешает awaitables, возвращаемые методом__anext__()асинхронного итератора, до тех пор, пока не будет поднято исключениеStopAsyncIteration. Введено в PEP 492. -
attribute -
Значение, связанное с объектом, которое обычно ссылается по имени с использованием точечных выражений. Например, если объект o имеет атрибут a, он будет ссылаться как o.a.
Можно присвоить объекту атрибут, имя которого не является идентификатором, определенным в Идентификаторы и ключевые слова, например, используя
setattr(), если это разрешено объектом. Такой атрибут будет недоступен с использованием точечного выражения и вместо этого должен быть получен с помощьюgetattr(). -
awaitable -
Объект, который может быть использован в выражении
await. Может быть генератором или объектом с методом__await__(). Смотрите также PEP 492. -
BDFL -
Бенефициарный диктатор на всю жизнь, а.к.а. Гвидо ван Россум, создатель Python.
-
binary file -
Объект файла, способный читать и записывать байтовые объекты. Примеры бинарных файлов: файлы, открытые в бинарном режиме (
'rb','wb'или'rb+'),sys.stdin.buffer,sys.stdout.bufferи экземплярыio.BytesIOиgzip.GzipFile.См. также текстовый файл для объекта файла, способного читать и записывать объекты
str. -
borrowed reference -
В API Python на C, заимствованная ссылка — это ссылка на объект, где код, использующий объект, не владеет ссылкой. Она становится висящей ссылкой, если объект уничтожен. Например, сборщик мусора может удалить последнюю сильную ссылку на объект и, следовательно, уничтожить его.
Рекомендуется вызывать
Py_INCREF()по заимствованной ссылке для преобразования её в сильную ссылку на месте, за исключением случаев, когда объект не может быть уничтожен до последнего использования заимствованной ссылки. ФункцияPy_NewRef()может использоваться для создания новой сильной ссылки. -
bytes-like object -
Объект, поддерживающий Протокол буфера и может экспортировать C-смежный буфер. Это включает все объекты
bytes,bytearrayиarray.array, а также многие общие объектыmemoryview. Байтподобные объекты могут использоваться для различных операций с бинарными данными; они включают сжатие, сохранение в бинарный файл и отправку по сокету.Некоторые операции требуют, чтобы бинарные данные были изменяемыми. В документации они часто упоминаются как «изменяемые байтподобные объекты». Примеры изменяемых буферных объектов включают
bytearrayиmemoryviewобъектаbytearray. Другие операции требуют, чтобы бинарные данные хранились в неизменяемых объектах («только для чтения байтподобные объекты»); примерами являютсяbytesиmemoryviewобъектаbytes. -
bytecode -
Исходный код Python компилируется в байт-код, внутреннее представление программы Python в интерпретаторе CPython. Байткод также кэшируется в файлах
.pycдля того, чтобы выполнение того же файла было быстрее во второй раз (перекомпиляция из исходного кода в байткод может быть предотвращена). Этот «промежуточный язык» выполняется на виртуальной машине, которая выполняет машинный код, соответствующий каждому байткоду. Обратите внимание, что байткоды не должны работать между различными виртуальными машинами Python и не должны быть стабильными между версиями Python.Список инструкций байткода можно найти в документации по модулю dis.
-
callable -
Вызываемый объект — это объект, который можно вызвать, возможно, с набором аргументов (см. аргумент), с помощью следующего синтаксиса:
callable(argument1, argument2, argumentN)
Функция функция, и расширяя понятие метод, является вызываемым объектом. Экземпляр класса, который реализует метод
__call__(), также является вызываемым объектом. -
callback -
Подпрограммная функция, которая передаётся как аргумент для выполнения в какой-то момент в будущем.
-
class -
Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.
-
class variable -
Переменная, определённая в классе и предназначенная для изменения только на уровне класса (т.е. не в экземпляре класса).
-
complex number -
Расширение знакомой системы действительных чисел, в которой все числа выражаются как сумма действительной и мнимой частей. Мнимые числа — это действительные кратные мнимой единицы (квадратному корню из
-1), часто записываемой какiв математике илиjв технике. Python поддерживает комплексные числа, которые записываются с использованием последней записи; мнимая часть записывается с помощью суффиксаj, например,3+1j. Для доступа к комплексным аналогам модуляmath, используйтеcmath. Использование комплексных чисел — довольно продвинутая математическая функция. Если вам они не нужны, вы можете их спокойно игнорировать. -
context manager -
Объект, который управляет средой, видимой в инструкции
with, определяя методы__enter__()и__exit__(). См. PEP 343. -
context variable
-
Переменная, которая может иметь разные значения в зависимости от контекста. Это похоже на Thread-Local Storage, в котором каждый поток выполнения может иметь разное значение для переменной. Однако с переменными контекста может быть несколько контекстов в одном потоке выполнения, и основное использование переменных контекста — отслеживание переменных в одновременных асинхронных задачах. См.
contextvars. -
contiguous -
Буфер считается непрерывным, если он является либо C-непрерывным, либо Fortran-непрерывным. Буферы нулевой размерности являются C- и Fortran-непрерывными. В одномерных массивах элементы должны располагаться в памяти рядом друг с другом в порядке возрастания индексов, начиная с нуля. В многомерных C-непрерывных массивах последний индекс изменяется быстрее всего при просмотре элементов в порядке адресов памяти. Однако в Fortran-непрерывных массивах первый индекс изменяется быстрее всего.
-
coroutine -
Корутины — это более обобщённая форма подпрограмм. Подпрограммы вызываются в одной точке и завершаются в другой. Корутины могут вызываться, завершаться и возобновляться во многих различных точках. Они могут быть реализованы с помощью оператора
async def. См. также PEP 492. -
coroutine function -
Функция, которая возвращает объект корутины. Функция корутины может быть определена с помощью оператора
async defи может содержать ключевые словаawait,async forиasync with. Они были введены PEP 492. -
CPython -
Каноническая реализация языка программирования Python, распространяемая на python.org. Термин «CPython» используется при необходимости для различения этой реализации от других, таких как Jython или IronPython.
-
decorator -
Функция, возвращающая другую функцию, обычно применяемая как преобразование функций с использованием синтаксиса
@wrapper. Примеры декораторов —classmethod()иstaticmethod().Синтаксис декоратора — всего лишь синтаксический сахар, следующие два определения функций семантически эквивалентны:
def f(arg): ... f = staticmethod(f) @staticmethod def f(arg): ...Такая же концепция существует для классов, но используется реже. Дополнительную информацию о декораторах можно найти в документации по определениям функций и определениям классов.
-
descriptor -
Любой объект, который определяет методы
__get__(),__set__()или__delete__(). Когда атрибут класса является дескриптором, его специальное поведение при связывании срабатывает при поиске атрибута. Обычно использование a.b для получения, установки или удаления атрибута ищет объект b в словаре класса a, но если b является дескриптором, вызывается соответствующий метод дескриптора. Понимание дескрипторов является ключевым для глубокого понимания Python, поскольку они являются основой многих функций, включая функции, методы, свойства, классовые методы, статические методы и ссылки на родительские классы.Дополнительную информацию о методах дескрипторов см. в Реализация дескрипторов или в Руководстве по дескрипторам.
-
dictionary -
Ассоциативный массив, где произвольные ключи сопоставляются со значениями. Ключи могут быть любыми объектами с методами
__hash__()и__eq__(). В Perl называется хэшем. -
dictionary comprehension -
Компактный способ обработки всех или части элементов в итерируемом объекте и возвращения словаря с результатами.
results = {n: n ** 2 for n in range(10)}генерирует словарь, содержащий ключnсопоставленный со значениемn ** 2. См. Представления для списков, множеств и словарей. -
dictionary view -
Объекты, возвращаемые из
dict.keys(),dict.values()иdict.items(), называются представлениями словаря. Они предоставляют динамическое представление записей словаря, что означает, что при изменении словаря представление отражает эти изменения. Чтобы принудительно преобразовать представление словаря в полный список, используйтеlist(dictview). См. Объекты представлений словаря. -
docstring -
Строковая литерал, которая появляется как первое выражение в классе, функции или модуле. Несмотря на то, что она игнорируется при выполнении блока кода, она распознаётся компилятором и помещается в атрибут
__doc__окружающего класса, функции или модуля. Поскольку она доступна через интроспекцию, это каноническое место для документации объекта. -
duck-typing -
Стиль программирования, который не смотрит на тип объекта, чтобы определить, имеет ли он нужный интерфейс; вместо этого метод или атрибут просто вызываются или используются («Если он выглядит как утка и крякает как утка, значит, это должна быть утка»). Подчёркивая интерфейсы, а не конкретные типы, хорошо спроектированный код улучшает свою гибкость, позволяя полиморфную подстановку. Подход duck-typing избегает тестов с использованием
type()илиisinstance(). (Заметьте, однако, что duck-typing можно дополнить абстрактными базовыми классами.) Вместо этого он обычно использует тесты сhasattr()или стиль программирования EAFP. -
EAFP -
Легче попросить прощения, чем разрешения. Этот распространённый стиль кодирования Python предполагает существование допустимых ключей или атрибутов и перехватывает исключения, если предположение оказывается ложным. Этот чистый и быстрый стиль характеризуется наличием множества операторов
tryиexcept. Этот метод контрастирует со стилем LBYL, распространённым во многих других языках, таких как C. -
expression -
Часть синтаксиса, которая может быть вычислена до некоторого значения. Иными словами, выражение — это совокупность элементов выражения, таких как литералы, имена, доступ к атрибутам, операторы или вызовы функций, которые все возвращают значение. В отличие от многих других языков, не все конструкции языка являются выражениями. Также существуют операторы, которые нельзя использовать в качестве выражений, таких как
while. Присваивания также являются операторами, а не выражениями. -
extension module -
Модуль, написанный на C или C++, использующий C API Python для взаимодействия с ядром и с пользовательским кодом.
-
f-string -
Строковые литералы, начинающиеся с
'f'или'F', обычно называются «f-строками», что является сокращением от форматированных строковых литералов. См. также PEP 498. -
file object
-
Объект, предоставляющий файловый API (с методами, такими как
read()илиwrite()) для доступа к базовому ресурсу. В зависимости от способа его создания, файловый объект может обеспечивать доступ к реальному файлу на диске или к другому типу хранилища или устройству связи (например, стандартному вводу/выводу, буферам в памяти, сокетам, каналам и т.д.). Файловые объекты также называются объектами, похожими на файлы или потоками.На самом деле существует три категории файловых объектов: сырые бинарные файлы, буферизованные бинарные файлы и текстовые файлы. Их интерфейсы определены в модуле
io. Канонический способ создания файлового объекта — с помощью функцииopen(). -
file-like object -
Синоним для файлового объекта.
-
filesystem encoding and error handler -
Кодировка и обработчик ошибок, используемые Python для декодирования байтов из операционной системы и кодирования Unicode для операционной системы.
Кодировка файловой системы должна гарантировать успешное декодирование всех байтов ниже 128. Если кодировка файловой системы не обеспечивает эту гарантию, функции API могут вызывать исключение
UnicodeError.Функции
sys.getfilesystemencoding()иsys.getfilesystemencodeerrors()могут использоваться для получения кодировки и обработчика ошибок файловой системы.Кодировка и обработчик ошибок файловой системы настраиваются при запуске Python функцией
PyConfig_Read(): см. членыfilesystem_encodingиfilesystem_errorsструктурыPyConfig.См. также кодировку локали.
-
finder -
Объект, пытающийся найти загрузчик для импортируемого модуля.
Существуют два типа находок: нахождения мета-пути для использования с
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 или которые могут быть получены по одному за раз с помощью функцииfunctools.singledispatch().Обычно относится к функции-генератору, но в некоторых контекстах может относиться к итератору-генератору. В тех случаях, когда предполагаемое значение неясно, использование полных терминов устраняет неоднозначность.
-
generator iterator -
Объект, созданный функцией-генератором генератор.
Каждое
yieldвременно приостанавливает обработку, запоминая состояние выполнения (включая локальные переменные и ожидающие try-блоки). Когда итератор-генератор возобновляется, он продолжает с того места, где остановился (в отличие от функций, которые начинают с нуля при каждом вызове). -
generator expression -
Выражение, возвращающее итератор. Оно выглядит как обычное выражение, за которым следует
forпредложение, определяющее переменную цикла, диапазон и необязательноеifпредложение. Объединённое выражение генерирует значения для вложенной функции:>>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81 285
-
generic function -
Функция, составленная из нескольких функций, реализующих одну и ту же операцию для различных типов. Реализация, которая должна быть использована во время вызова, определяется алгоритмом диспетчеризации.
См. также запись глоссария одиночная диспетчеризация, декоратор
functools.singledispatch()и PEP 443. -
generic type
-
Тип тип, который может быть параметризован; обычно класс контейнера контейнерный класс, такой как
listилиdict. Используется для подсказок типов и аннотаций.Для более подробной информации см. типы обобщенных псевдонимов, PEP 483, PEP 484, PEP 585 и модуль
typing. -
GIL -
global interpreter lock -
Механизм, используемый интерпретатором CPython для обеспечения выполнения только одной потоковой нити кода Python байт-кода за раз. Это упрощает реализацию CPython, делая модель объектов (включая критически важные встроенные типы, такие как
dict) неявным образом защищенными от одновременного доступа. Блокировка всего интерпретатора облегчает создание многопоточного интерпретатора, за счет значительного уменьшения паралеллизма, обеспечиваемого многопроцессорными машинами.Однако некоторые модули расширения, как стандартные, так и сторонние, разработаны таким образом, чтобы освобождать GIL при выполнении вычислительно сложных задач, таких как сжатие или хеширование. Также GIL всегда освобождается при выполнении ввода-вывода.
Предыдущие попытки создать интерпретатор с «свободными потоками» (который блокирует общие данные с гораздо более тонкой детализацией) не увенчались успехом, поскольку производительность страдала в обычном однопроцессорном случае. Считается, что преодоление этой проблемы производительности сделало бы реализацию намного сложнее и, следовательно, дороже в обслуживании.
-
hash-based pyc -
Файл кэша байткода, который использует хэш, а не время последнего изменения соответствующего исходного файла, для определения его действительности. См. Определение действительности кэшированного байт-кода.
-
hashable -
Объект является хешируемым, если имеет значение хэша, которое никогда не изменяется в течение его жизни (он должен иметь метод
__hash__()) и может быть сравнен с другими объектами (он должен иметь метод__eq__()). Хешируемые объекты, которые сравниваются как равные, должны иметь одинаковое значение хэша.Хешируемость делает объект пригодным в качестве ключа словаря и элемента множества, поскольку эти структуры данных используют значение хэша во внутренней работе.
Большинство неизменяемых встроенных объектов Python являются хешируемыми; изменяемые контейнеры (такие как списки или словари) не являются хешируемыми; неизменяемые контейнеры (такие как кортежи и замороженные множества) хешируемы только если их элементы хешируемы. Объекты, являющиеся экземплярами классов, определенных пользователем, по умолчанию хешируемы. Все они сравниваются как неравные (кроме себя), а их значение хэша выводится из их
id(). -
IDLE -
Интегрированная среда разработки и обучения для Python. IDLE — это базовая среда редактора и интерпретатора, поставляемая со стандартной дистрибуцией Python.
-
immutable -
Объект с фиксированным значением. К неизменяемым объектам относятся числа, строки и кортежи. Такой объект не может быть изменен. Если необходимо хранить другое значение, должен быть создан новый объект. Они играют важную роль в местах, где необходимо постоянное значение хэша, например, в качестве ключа в словаре.
-
import path -
Список расположений (или элементов пути), которые ищет поисковик по пути для импорта модулей. Во время импорта этот список расположений обычно берется из
sys.path, но для подпакетов он также может браться из атрибута родительского пакета__path__. -
importing -
Процесс, посредством которого код Python в одном модуле становится доступным коду Python в другом модуле.
-
importer -
Объект, который как находит, так и загружает модуль; одновременно и объект поисковика, и загрузчика.
-
interactive -
Python имеет интерактивный интерпретатор, что означает, что вы можете вводить операторы и выражения в командной строке интерпретатора, немедленно их выполнять и видеть их результаты. Просто запустите
pythonбез аргументов (возможно, выбрав его из главного меню вашего компьютера). Это очень мощный способ протестировать новые идеи или инспектировать модули и пакеты (помнитеhelp(x)). -
interpreted -
Python — интерпретируемый язык, в отличие от компилируемого, хотя различие может быть размытым из-за наличия компилятора байт-кода. Это означает, что исходные файлы могут быть запущены напрямую без явного создания исполняемого файла, который затем выполняется. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя их программы, как правило, выполняются медленнее. См. также интерактивный.
-
interpreter shutdown -
При запросе завершения работы, интерпретатор Python входит в специальную фазу, где постепенно освобождает все выделенные ресурсы, такие как модули и различные критически важные внутренние структуры. Он также выполняет несколько вызовов сборщику мусора сборщику мусора. Это может вызвать выполнение кода в пользовательских деструкторах или обратных вызовах weakref. Код, выполняемый во время завершения работы интерпретатора, может столкнуться с различными исключениями, поскольку ресурсы, на которые он полагается, могут больше не работать (распространенные примеры — модули библиотек или механизм предупреждений).
Основной причиной завершения работы интерпретатора является то, что модуль
__main__или исполняемый скрипт завершили выполнение. -
iterable -
Объект, способный возвращать свои члены по одному за раз. Примерами итерируемых объектов являются все типы последовательностей (такие как
list,strиtuple) и некоторые не последовательные типы, такие какdict, объекты файлов, и объекты любых классов, которые вы определяете с методом__iter__()или методом__getitem__(), реализующим семантику последовательности.Итерируемые объекты могут быть использованы в цикле
forи во многих других местах, где требуется последовательность (zip(),map(), …). Когда итерируемый объект передается в качестве аргумента встроенной функцииiter(), она возвращает итератор для объекта. Этот итератор пригоден для одного прохода по набору значений. При использовании итерируемых объектов обычно нет необходимости вызыватьiter()или самостоятельно работать с объектами итераторов. Операторforделает это автоматически для вас, создавая временную неименованную переменную для хранения итератора на время цикла. См. также итератор, последовательность и генератор. -
iterator
-
Объект, представляющий поток данных. Повторные вызовы метода итератора
__next__()(или передача его в встроенную функциюnext()) возвращают последовательные элементы из потока. Когда больше данных недоступно, вместо этого поднимается исключениеStopIteration. В этот момент объект итератора исчерпан, и любые дальнейшие вызовы его метода__next__()просто повторно поднимаютStopIteration. Итераторы обязаны иметь метод__iter__(), который возвращает сам объект итератора, поэтому каждый итератор также является итерируемым и может быть использован в большинстве мест, где принимаются другие итерируемые объекты. Одно заметное исключение — код, который пытается выполнить несколько итераций. Объект контейнера (например,list) каждый раз создаёт новый итератор, когда вы передаёте его функцииiter()или используете его в циклеfor. Попытка сделать это с итератором вернёт тот же исчерпанный объект итератора, используемый в предыдущем проходе итерации, что создаст впечатление пустого контейнера.Более подробную информацию можно найти в Типы итераторов.
Примечание реализации CPython: CPython не всегда последовательно применяет требование к итератору определить
__iter__(). -
key function -
Функция ключа или функция сортировки — это вызываемый объект, возвращающий значение, используемое для сортировки или упорядочивания. Например,
locale.strxfrm()используется для создания ключа сортировки, учитывающего правила сортировки, зависящие от локали.Ряд инструментов в Python принимают функции ключей для управления тем, как элементы упорядочиваются или группируются. К ним относятся
min(),max(),sorted(),list.sort(),heapq.merge(),heapq.nsmallest(),heapq.nlargest()иitertools.groupby().Существует несколько способов создать функцию ключа. Например, метод
str.lower()может служить функцией ключа для сортировки, не учитывающей регистр. В качестве альтернативы, функция ключа может быть создана с помощью выраженияlambda, напримерlambda r: (r[0], r[2]). Также,operator.attrgetter(),operator.itemgetter()иoperator.methodcaller()— это три конструктора функций ключей. Примеры создания и использования функций ключей см. в разделе Сортировка. -
keyword argument -
См. аргумент.
-
lambda -
Анонимная встроенная функция, состоящая из одного выражения, которое вычисляется при вызове функции. Синтаксис создания лямбда-функции
lambda [parameters]: expression -
LBYL -
Проверь, прежде чем прыгать. Этот стиль кодирования явно проверяет предварительные условия перед выполнением вызовов или обращений. Этот стиль контрастирует с подходом EAFP и характеризуется наличием многих инструкций
if.В многопоточной среде подход LBYL может представлять собой риск возникновения гонки между «проверкой» и «прыжком». Например, код
if key in mapping: return mapping[key]может потерпеть неудачу, если другой поток удалит key из mapping после проверки, но до обращения. Эта проблема может быть решена с помощью блокировок или с помощью подхода EAFP. -
list -
Встроенная в Python последовательность. Несмотря на своё название, она больше похожа на массив в других языках, чем на связный список, так как доступ к элементам происходит за время O(1).
-
list comprehension -
Компактный способ обработки всех или части элементов последовательности и возвращения списка с результатами.
result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]генерирует список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Операторifявляется необязательным. Если он опущен, все элементы вrange(256)обрабатываются. -
loader -
Объект, загружающий модуль. Он должен определить метод с именем
load_module(). Загрузчик обычно возвращается поисковиком поисковик. Подробности см. в PEP 302, а абстрактный базовый класс — вimportlib.abc.Loader. -
locale encoding -
В Unix — это кодировка локали LC_CTYPE. Её можно установить с помощью
locale.setlocale(locale.LC_CTYPE, new_locale).В Windows — это кодовая страница ANSI (например,
"cp1252").В Android и VxWorks Python использует
"utf-8"в качестве кодировки локали.locale.getencoding()можно использовать для получения кодировки локали. -
magic method -
Неформальный синоним для специального метода.
-
mapping -
Объект-контейнер, который поддерживает произвольные запросы по ключу и реализует методы, указанные в
collections.abc.Mappingилиcollections.abc.MutableMappingабстрактные базовые классы. Примеры включаютdict,collections.defaultdict,collections.OrderedDictиcollections.Counter. -
meta path finder -
Поисковик поисковик, возвращаемый в результате поиска в
sys.meta_path. Поисковики мета-пути связаны, но отличаются от поисковиков по элементам пути.См.
importlib.abc.MetaPathFinderдля методов, реализуемых поисковиками мета-пути. -
metaclass -
Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за создание класса по этим трём аргументам. Большинство языков объектно-ориентированного программирования предоставляют реализацию по умолчанию. Что делает Python особенным, так это возможность создания пользовательских метаклассов. Большинству пользователей этот инструмент не нужен, но когда возникает необходимость, метаклассы могут предоставить мощные и элегантные решения. Они использовались для ведения журнала доступа к атрибутам, добавления потоковой безопасности, отслеживания создания объектов, реализации одиночных экземпляров и многих других задач.
Дополнительную информацию можно найти в Метаклассы.
-
method
-
Функция, определённая внутри тела класса. Если вызывается как атрибут экземпляра этого класса, метод получит объект экземпляра в качестве своего первого аргумента (который обычно называется
self). См. функцию и вложенную область видимости. -
method resolution order -
Порядок разрешения методов — порядок, в котором ищутся базовые классы для поиска члена во время поиска. Смотрите Порядок разрешения методов Python 2.3 для подробностей об алгоритме, используемом интерпретатором Python с версии 2.3.
-
module -
Объект, который служит организационной единицей кода Python. Модули имеют пространство имён, содержащее произвольные объекты Python. Модули загружаются в Python путём импорта.
См. также пакет.
-
module spec -
Пространство имён, содержащее информацию, связанную с импортом, используемую для загрузки модуля. Экземпляр
importlib.machinery.ModuleSpec. -
MRO -
mutable -
Изменяемые объекты могут изменить своё значение, но сохраняют свой
id(). См. также неизменяемый. -
named tuple -
Термин «именованный кортеж» относится к любому типу или классу, который наследуется от кортежа и индексируемые элементы которого также доступны с помощью именованных атрибутов. Тип или класс также может иметь другие особенности.
Несколько встроенных типов являются именованными кортежами, включая значения, возвращаемые
time.localtime()иos.stat(). Ещё один пример —sys.float_info:>>> sys.float_info[1] # indexed access 1024 >>> sys.float_info.max_exp # named field access 1024 >>> isinstance(sys.float_info, tuple) # kind of tuple True
Некоторые именованные кортежи являются встроенными типами (например, указанные выше примеры). В качестве альтернативы именованный кортеж можно создать из обычного определения класса, которое наследуется от
tupleи определяет именованные поля. Такой класс можно написать вручную, либо создать путём наследованияtyping.NamedTupleили с помощью фабричной функцииcollections.namedtuple(). Последние техники также добавляют несколько дополнительных методов, которые могут отсутствовать в именованных кортежах, написанных вручную или встроенных. -
namespace -
Место хранения переменной. Пространства имён реализуются как словари. Существуют локальные, глобальные и встроенные пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён поддерживают модульность, предотвращая конфликты имён. Например, функции
builtins.openиos.open()различаются по своим пространствам имён. Пространства имён также повышают читаемость и поддерживаемость, делая понятным, какой модуль реализует функцию. Например, записьrandom.seed()илиitertools.islice()показывает, что эти функции реализованы модулямиrandomиitertoolsсоответственно. -
namespace package -
PEP 420 пакет, который служит только контейнером для подпакетов. Пространства имён пакетов могут не иметь физического представления, и в частности, они не похожи на обычный пакет, потому что у них нет файла
__init__.py.См. также модуль.
-
nested scope -
Возможность ссылаться на переменную во внешнем определении. Например, функция, определённая внутри другой функции, может ссылаться на переменные во внешней функции. Обратите внимание, что вложенные области видимости по умолчанию работают только для ссылки, а не для присваивания. Локальные переменные и читают, и записывают в самой внутренней области видимости. Аналогично, глобальные переменные читают и записывают в глобальное пространство имён.
nonlocalпозволяет записывать во внешние области видимости. -
new-style class -
Старое название для варианта классов, используемого сейчас для всех объектов классов. В более ранних версиях Python только классы нового стиля могли использовать новые, универсальные функции Python, такие как
__slots__, дескрипторы, свойства,__getattribute__(), методы класса и статические методы. -
object -
Любые данные с состоянием (атрибутами или значением) и определённым поведением (методами). Также конечный базовый класс любого класса нового стиля.
-
package -
Модуль Python, который может содержать подмодули или, рекурсивно, подпакеты. Технически, пакет — это модуль Python с атрибутом
__path__.См. также обычный пакет и пространство имён пакета.
-
parameter -
Именованный элемент в определении функции (или метода), который указывает аргумент (или в некоторых случаях, аргументы), которые функция может принять. Существует пять видов параметров:
-
позиционный или ключевой: определяет аргумент, который может быть передан либо позиционно, либо как ключевой аргумент. Это параметр по умолчанию, например, foo и bar в следующем:
def func(foo, bar=None): ...
-
только позиционный: определяет аргумент, который можно передать только позиционно. Позиционные-только параметры можно определить, включив символ
/в список параметров определения функции после них, например, posonly1 и posonly2 в следующем:def func(posonly1, posonly2, /, positional_or_keyword): ...
-
только ключевой: определяет аргумент, который можно передать только по ключевому слову. Ключевые-только параметры можно определить, включив единственный параметр с произвольным количеством позиционных аргументов или просто
*в список параметров определения функции перед ними, например, kw_only1 и kw_only2 в следующем:def func(arg, *, kw_only1, kw_only2): ...
-
с произвольным количеством позиционных аргументов: определяет, что можно предоставить произвольное количество позиционных аргументов (в дополнение к любым позиционным аргументам, которые уже принимаются другими параметрами). Такой параметр можно определить, добавив перед именем параметра
*, например, args в следующем:def func(*args, **kwargs): ...
-
с произвольным количеством ключевых аргументов: определяет, что можно предоставить произвольное количество ключевых аргументов (в дополнение к любым ключевым аргументам, которые уже принимаются другими параметрами). Такой параметр можно определить, добавив перед именем параметра
**, например, kwargs в приведённом выше примере.
Параметры могут определять как необязательные, так и обязательные аргументы, а также значения по умолчанию для некоторых необязательных аргументов.
См. также запись в глоссарии аргумент, вопрос в FAQ о разнице между аргументами и параметрами, класс
inspect.Parameter, раздел Определения функций и PEP 362. -
-
path entry -
Единственное местоположение в пути импорта, которое использует поисковик по пути для поиска модулей для импорта.
-
path entry finder
-
A поисковик возвращённый вызываемым объектом из списка
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 должен содержать краткое техническое описание и обоснование предлагаемых функций.
PEPs предназначены для того, чтобы быть основными механизмами для предложения крупных новых функций, сбора отзывов сообщества по тому или иному вопросу и документирования принятых решений по разработке Python. Автор PEP несёт ответственность за формирование консенсуса в сообществе и документирование расхождений во мнениях.
См. PEP 1.
-
portion -
Набор файлов в одном каталоге (возможно, хранящихся в файле zip), которые вносят вклад в пакет пространства имён, как определено в PEP 420.
-
positional argument -
См. аргумент.
-
provisional API -
Промежуточный API — это API, который намеренно исключён из гарантий обратной совместимости стандартной библиотеки. Хотя существенные изменения таких интерфейсов не ожидаются, пока они помечены как предварительные, могут произойти несовместимые с обратной совместимостью изменения (вплоть до удаления интерфейса), если это сочтут необходимым основные разработчики. Такие изменения не будут вноситься без необходимости — они будут происходить только в случае обнаружения серьёзных фундаментальных недостатков, которые были упущены до включения API.
Даже для предварительных API несовместимые с обратной совместимостью изменения рассматриваются как «мера последней инстанции» — будут предприняты все возможные попытки найти решение, совместимое с обратной совместимостью, для любых выявленных проблем.
Этот процесс позволяет стандартной библиотеке продолжать эволюционировать со временем, не блокируя проблемные ошибки проектирования на длительные периоды. См. PEP 411 для получения дополнительной информации.
-
provisional package -
См. промежуточный API.
-
Python 3000 -
Псевдоним для релиза Python 3.x (придуман давно, когда выпуск версии 3 был чем-то далёким будущим). Также сокращается до «Py3k».
-
Pythonic -
Идея или фрагмент кода, который тесно следует наиболее распространённым идиомам языка Python, а не реализует код, используя концепции, распространённые в других языках. Например, распространённой идиомой в Python является перебор всех элементов итерируемого объекта с помощью оператора
for. Во многих других языках такого типа конструкции нет, поэтому люди, незнакомые с Python, иногда используют счётчик:for i in range(len(food)): print(food[i])В противоположность более чистому идиоматичному способу Python:
for piece in food: print(piece) -
qualified name -
Точечная запись, показывающая «путь» от глобальной области видимости модуля к классу, функции или методу, определённому в этом модуле, как определено в PEP 3155. Для функций и классов верхнего уровня квалифицированное имя совпадает с именем объекта:
>>> class C: ... class D: ... def meth(self): ... pass ... >>> C.__qualname__ 'C' >>> C.D.__qualname__ 'C.D' >>> C.D.meth.__qualname__ 'C.D.meth'
Применительно к модулям полное квалифицированное имя означает весь точечный путь к модулю, включая все родительские пакеты, например,
email.mime.text:>>> import email.mime.text >>> email.mime.text.__name__ 'email.mime.text'
-
reference count -
Количество ссылок на объект. Когда счётчик ссылок объекта падает до нуля, он освобождается. Некоторые объекты «бессмертны» и имеют счётчики ссылок, которые никогда не изменяются, и поэтому объекты никогда не освобождаются. Счётчик ссылок, как правило, не виден коду Python, но он является ключевым элементом реализации CPython. Программисты могут вызвать функцию
sys.getrefcount(), чтобы получить счётчик ссылок для конкретного объекта. -
regular package -
Традиционный пакет, например, каталог, содержащий файл
__init__.py.См. также пакет пространства имён.
-
__slots__ -
Декларация внутри класса, которая экономит память, предварительно объявляя место для атрибутов экземпляра и исключая словари экземпляров. Хотя техника популярна, её непросто реализовать правильно, и лучше всего её использовать в редких случаях, когда в памяти-критическом приложении имеется большое количество экземпляров.
-
sequence
-
Итерируемый объект, который поддерживает эффективный доступ к элементам с использованием целочисленных индексов через специальный метод
__getitem__()и определяет метод__len__(), возвращающий длину последовательности. Некоторые встроенные типы последовательностей — этоlist,str,tupleиbytes. Обратите внимание, чтоdictтакже поддерживает__getitem__()и__len__(), но считается отображением, а не последовательностью, так как поиск использует произвольные неизменяемые ключи, а не целые числа.Абстрактный базовый класс
collections.abc.Sequenceопределяет гораздо более богатый интерфейс, выходящий за рамки просто__getitem__()и__len__(), добавляяcount(),index(),__contains__()и__reversed__(). Типы, реализующие этот расширенный интерфейс, могут быть зарегистрированы явно с помощьюregister(). Для получения дополнительной документации по методам последовательностей в целом см. Общие операции с последовательностями. -
set comprehension -
Краткий способ обработки всех или части элементов в итерируемом объекте и возврата множества с результатами.
results = {c for c in 'abracadabra' if c not in 'abc'}генерирует множество строк{'r', 'd'}. См. Отображения списков, множеств и словарей. -
single dispatch -
Форма диспетчеризации обобщенной функции, где реализация выбирается на основе типа одного аргумента.
-
slice -
Объект, обычно содержащий часть последовательности. Срез создается с помощью нотации подстроки,
[]с двоеточиями между числами, когда их несколько, например, вvariable_name[1:3:5]. В нотации скобок (индексов) используются объектыsliceвнутри. -
special method -
Метод, вызываемый неявно Python для выполнения определенной операции над типом, например, сложения. Такие методы имеют имена, начинающиеся и заканчивающиеся двойными подчеркиваниями. Специальные методы документированы в Специальные имена методов.
-
statement -
Оператор является частью блока кода. Оператор — это либо выражение, либо один из нескольких конструкций с ключевым словом, например,
if,whileилиfor. -
static type checker -
Внешний инструмент, который считывает код Python и анализирует его, выявляя такие проблемы, как неверные типы. См. также подсказки типов и модуль
typing. -
strong reference -
В C API Python сильная ссылка — это ссылка на объект, который принадлежит коду, содержащему ссылку. Сильная ссылка принимается путем вызова
Py_INCREF()при создании ссылки и освобождается с помощьюPy_DECREF()при удалении ссылки.Функция
Py_NewRef()может быть использована для создания сильной ссылки на объект. Обычно функциюPy_DECREF()необходимо вызвать на сильной ссылке перед выходом из области видимости сильной ссылки, чтобы избежать утечки ссылки.См. также заимствованную ссылку.
-
text encoding -
Строка в Python — это последовательность точек кода Юникода (в диапазоне
U+0000–U+10FFFF). Для хранения или передачи строки необходимо выполнить сериализацию в последовательность байтов.Сериализация строки в последовательность байтов называется «кодированием», а восстановление строки из последовательности байтов — «декодированием».
Существует множество различных кодировок текста кодировок, которые в совокупности называются «кодировками текста».
-
text file -
Объект файла, способный читать и записывать объекты
str. Часто текстовый файл фактически обращается к потоку данных байтов и обрабатывает кодировку текста автоматически. Примеры текстовых файлов — файлы, открытые в текстовом режиме ('r'или'w'),sys.stdin,sys.stdoutи экземплярыio.StringIO.См. также бинарный файл для объекта файла, способного читать и записывать объекты типа байты.
-
triple-quoted string -
Строка, ограниченная тремя экземплярами кавычек (") или апострофов ('). Хотя они не предоставляют никаких функций, отсутствующих в строках с одинарными кавычками, они полезны по нескольким причинам. Они позволяют включать неэкранированные одинарные и двойные кавычки в строку, а также могут занимать несколько строк без использования символа продолжения, что делает их особенно полезными при написании строк документации.
-
type -
Тип объекта Python определяет, каким объектом он является; каждый объект имеет тип. Тип объекта доступен как атрибут
__class__или может быть получен с помощьюtype(obj). -
type alias -
Синоним типа, созданный путем присваивания типа идентификатору.
Псевдонимы типов полезны для упрощения подсказок типов. Например:
def remove_gray_shades( colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]: passможно сделать более удобочитаемым так:
Color = tuple[int, int, int] def remove_gray_shades(colors: list[Color]) -> list[Color]: passСм.
typingи PEP 484, которые описывают эту функциональность. -
type hint -
Подсказка, которая определяет ожидаемый тип для переменной, атрибута класса или параметра или возвращаемого значения функции.
Подсказки типов необязательны и не применяются Python, но они полезны для статических анализаторов типов. Они также могут помочь IDE с автодополнением кода и рефакторингом.
Подсказки типов для глобальных переменных, атрибутов класса и функций, но не локальных переменных, доступны с помощью
typing.get_type_hints().См.
typingи PEP 484, которые описывают эту функциональность. -
universal newlines
-
Способ интерпретации потоков текста, в котором все перечисленные ниже считаются окончанием строки: соглашение о конце строки Unix
'\n', соглашение Windows'\r\n', и старое соглашение Macintosh'\r'. См. PEP 278 и PEP 3116, а такжеbytes.splitlines()для дополнительного использования. -
variable annotation -
Аннотация переменной или атрибута класса.
При аннотации переменной или атрибута класса присваивание необязательно:
class C: field: 'annotation'Аннотации переменных обычно используются для указаний типов: например, ожидается, что эта переменная будет принимать значения
int:count: int = 0
Синтаксис аннотаций переменных объяснён в разделе Выражения присваивания с аннотациями.
См. аннотацию функции, PEP 484 и PEP 526, которые описывают эту функциональность. Также см. Рекомендации по применению аннотаций для рекомендаций по работе с аннотациями.
-
virtual environment -
Кооперативно изолированная среда выполнения, которая позволяет пользователям Python и приложениям устанавливать и обновлять пакеты дистрибутива Python без вмешательства в работу других приложений Python, работающих в той же системе.
См. также
venv. -
virtual machine -
Компьютер, определённый полностью в программном обеспечении. Виртуальная машина Python выполняет байткод, сгенерированный компилятором байткода.
-
Zen of Python -
Перечень принципов и философий проектирования Python, которые полезны для понимания и использования языка. Список можно получить, набрав «
import this» в интерактивном приглашении.
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.12/glossary.html