Глоссарий
-
>>> -
Стандартное приглашение 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.
-
awaitable -
Объект, который может быть использован в выражении
await. Может быть корутиной или объектом с методом__await__(). См. также PEP 492. -
BDFL -
Благожелательный диктатор на всю жизнь, а.к.а. Guido van Rossum, создатель Python.
-
binary file -
Объект файла, способный читать и записывать объекты типа bytes. Примерами бинарных файлов являются файлы, открытые в бинарном режиме (
'rb','wb'или'rb+'),sys.stdin.buffer,sys.stdout.buffer, и экземплярыio.BytesIOиgzip.GzipFile.См. также текстовый файл для объекта файла, способного читать и записывать объекты
str. -
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.
-
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 -
Стиль программирования, при котором тип объекта не используется для определения наличия правильного интерфейса; вместо этого просто вызывается или используется метод или атрибут («Если он похож на утку и крякает как утка, значит, это должна быть утка»). Подчёркивая интерфейсы, а не конкретные типы, хорошо спроектированный код повышает гибкость, позволяя полиморфную подстановку. При подходе «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 -
Объект, предоставляющий интерфейс, ориентированный на файлы (с методами, такими как
read()илиwrite()к базовому ресурсу. В зависимости от способа его создания, объект файла может обеспечить доступ к реальному файлу на диске или к другому типу хранилища или устройству связи (например, стандартный ввод/вывод, буферы в памяти, сокеты, каналы и т.д.). Объекты файлов также называются объектами подобными файлам или потоками.На самом деле существует три категории объектов файлов: необработанные двоичные файлы, буферизованные двоичные файлы и текстовые файлы. Их интерфейсы определены в модуле
io. Канонический способ создания объекта файла — использование функцииopen(). -
file-like object -
Синоним для объекта файла.
-
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. - Функция
-
Последовательность операторов, возвращающая некоторое значение вызывающей стороне. Ей также можно передать ноль или более аргументов, которые могут быть использованы в ходе выполнения тела. См. также параметр, метод и раздел Определения функций.
- Аннотация функции
-
Аннотация параметра или значения возврата функции.
Аннотации функций обычно используются для подсказок типов: например, ожидается, что эта функция примет два
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)
- Сбор мусора
-
Процесс освобождения памяти, когда она больше не используется. Python выполняет сбор мусора с помощью подсчёта ссылок и циклического сборщика мусора, который может обнаруживать и разрывать циклы ссылок. Сборщик мусора можно контролировать с помощью модуля
gc. - Генератор
-
Функция, возвращающая итератор генератора. Она выглядит как обычная функция, за исключением того, что содержит выражения
yieldдля создания последовательности значений, которые могут быть использованы в цикле for или которые можно получить по одному за раз с помощью функцииnext().Обычно относится к функции-генератору, но в некоторых контекстах может относиться к итератору генератора. В тех случаях, когда предполагаемое значение не ясно, использование полных терминов позволяет избежать неоднозначности.
- Итератор генератора
-
Объект, созданный функцией генератор.
Каждый
yieldвременно приостанавливает обработку, запоминая состояние выполнения (включая локальные переменные и ожидающие операторы try). Когда итератор генератора возобновляется, он продолжает с того места, где остановился (в отличие от функций, которые начинают заново при каждом вызове). - Выражение генератора
-
Выражение, которое возвращает итератор. Оно выглядит как обычное выражение, за которым следует
for-оператор, определяющий переменную цикла, диапазон и необязательныйif-оператор. Объединённое выражение генерирует значения для внешней функции:>>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81 285
- Обобщённая функция
-
Функция, состоящая из нескольких функций, реализующих одну и ту же операцию для разных типов. Какой реализацией следует воспользоваться при вызове, определяется алгоритмом диспетчеризации.
См. также запись в глоссарии одноточечная диспетчеризация, декоратор
functools.singledispatch()и PEP 443. - Обобщённый тип
-
Тип, который может быть параметризован; обычно контейнерный класс, такой как
listилиdict. Используется для подсказок типов и аннотаций.Подробнее см. обобщённые типы алиасов, PEP 483, PEP 484, PEP 585 и модуль
typing. -
GIL - Глобальная блокировка интерпретатора
-
Механизм, используемый интерпретатором CPython для обеспечения того, что только один поток выполняет байт-код Python байт-код за раз. Это упрощает реализацию CPython, делая модель объектов (включая критически важные встроенные типы, такие как
dict) неявно защищенными от одновременного доступа. Блокировка всего интерпретатора упрощает многопоточность интерпретатора, но при этом теряется значительная часть параллелизма, предоставляемого многопроцессорными машинами.Однако некоторые расширенные модули, как стандартные, так и сторонние, разработаны таким образом, что отпускают GIL при выполнении вычислительно интенсивных задач, таких как сжатие или хеширование. Кроме того, GIL всегда отпускается при выполнении операций ввода-вывода.
Предыдущие попытки создания «свободно-поточного» интерпретатора (который блокирует общие данные на гораздо более мелком уровне) не увенчались успехом, поскольку производительность страдала в распространённом случае с одним процессором. Считается, что преодоление этой проблемы производительности сделало бы реализацию гораздо более сложной и поэтому более дорогостоящей в обслуживании.
- Файл кеша байткода, основанный на хэше
-
Файл кеша байткода, использующий хэш, а не время последнего изменения соответствующего исходного файла, для определения его актуальности. См. Недействительность кэшированного байткода.
- Хэшируемый
-
Объект является хэшируемым, если у него есть значение хэша, которое никогда не меняется в течение его жизненного цикла (необходим метод
__hash__()), и он может сравниваться с другими объектами (необходим метод__eq__()). Хэшируемые объекты, которые равны, должны иметь одинаковое значение хэша.Хэшируемость делает объект пригодным для использования в качестве ключа словаря и элемента множества, поскольку эти структуры данных используют значение хэша в своей внутренней работе.
Большинство неизменяемых встроенных объектов Python являются хэшируемыми; изменяемые контейнеры (такие как списки или словари) не являются хэшируемыми; неизменяемые контейнеры (такие как кортежи и наборы) являются хэшируемыми только в том случае, если их элементы являются хэшируемыми. Объекты, которые являются экземплярами пользовательских классов, по умолчанию хэшируемые. Они все сравниваются как неравные (кроме самих себя), и их значение хэша выводится из
id(). - IDLE
-
Интегрированная среда разработки для Python. IDLE — это базовая среда для редактирования и интерпретации, поставляемая со стандартной дистрибуцией Python.
- Неизменяемый
-
Объект с фиксированным значением. Неизменяемые объекты включают числа, строки и кортежи. Такой объект не может быть изменён. Если нужно сохранить другое значение, должен быть создан новый объект. Они играют важную роль в тех местах, где требуется постоянное значение хэша, например, в качестве ключа в словаре.
-
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. Попытка сделать это с итератором вернёт тот же исчерпанный объект итератора, используемый при предыдущей итерации, что даст вид пустого контейнера.Дополнительную информацию можно найти в Типы итераторов.
-
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]может завершиться неудачно, если другой поток удалит 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(). Загрузчик обычно возвращается поисковиком finder. Подробнее см. PEP 302 иimportlib.abc.Loaderдля абстрактного базового класса. -
magic method -
Неформальный синоним специального метода.
-
mapping -
Объект контейнера, поддерживающий произвольные поиски по ключу и реализующий методы, указанные в
MappingилиMutableMappingабстрактные базовые классы. Примеры включаютdict,collections.defaultdict,collections.OrderedDictиcollections.Counter. -
meta path finder -
Поисковик finder, возвращаемый в результате поиска в
sys.meta_path. Поисковики мета-пути связаны, но отличаются от поисковиков записей путей path entry finders.См.
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
-
A Python модуль which can contain submodules or recursively, subpackages. Technically, a package is a Python module with an
__path__attribute.See also обычный пакет and пакет пространства имён.
-
parameter -
A named entity in a функции (or method) definition that specifies an аргумент (or in some cases, arguments) that the function can accept. There are five kinds of parameter:
-
positional-or-keyword: specifies an argument that can be passed either позиционно or as a именованный аргумент. This is the default kind of parameter, for example foo and bar in the following:
def func(foo, bar=None): ...
-
positional-only: specifies an argument that can be supplied only by position. Positional-only parameters can be defined by including a
/character in the parameter list of the function definition after them, for example posonly1 and posonly2 in the following:def func(posonly1, posonly2, /, positional_or_keyword): ...
-
keyword-only: specifies an argument that can be supplied only by keyword. Keyword-only parameters can be defined by including a single var-positional parameter or bare
*in the parameter list of the function definition before them, for example kw_only1 and kw_only2 in the following:def func(arg, *, kw_only1, kw_only2): ...
-
var-positional: specifies that an arbitrary sequence of positional arguments can be provided (in addition to any positional arguments already accepted by other parameters). Such a parameter can be defined by prepending the parameter name with
*, for example args in the following:def func(*args, **kwargs): ...
-
var-keyword: specifies that arbitrarily many keyword arguments can be provided (in addition to any keyword arguments already accepted by other parameters). Such a parameter can be defined by prepending the parameter name with
**, for example kwargs in the example above.
Parameters can specify both optional and required arguments, as well as default values for some optional arguments.
See also the аргумент glossary entry, the FAQ question on разницу между аргументами и параметрами, the
inspect.Parameterclass, the Определения функций section, and PEP 362. -
-
path entry -
A single location on the пути импорта which the поиск по пути consults to find modules for importing.
-
path entry finder -
A поисковик returned by a callable on
sys.path_hooks(i.e. a крючок пути входа) which knows how to locate modules given a вход пути.See
importlib.abc.PathEntryFinderfor the methods that path entry finders implement. -
path entry hook -
A callable on the
sys.path_hooklist which returns a поисковик по пути входа if it knows how to find modules on a specific вход пути. -
path based finder -
One of the default мета-поисковики which searches an путь импорта for modules.
-
path-like object -
An object representing a file system path. A path-like object is either a
strorbytesobject representing a path, or an object implementing theos.PathLikeprotocol. An object that supports theos.PathLikeprotocol can be converted to astrorbytesfile system path by calling theos.fspath()function;os.fsdecode()andos.fsencode()can be used to guarantee astrorbytesresult instead, respectively. Introduced by 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])В отличие от более чистого, pythonic метода:
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. -
text encoding -
Строка в Python — это последовательность кодовых точек Юникода (в диапазоне
U+0000–U+10FFFF). Для хранения или передачи строки её нужно сериализовать как последовательность байтов.Сериализация строки в последовательность байтов называется «кодированием», а восстановление строки из последовательности байтов — «декодированием».
Существует множество различных кодировок текста, которые совместно называются «кодировками текста» codecs.
-
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–2022 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.9/glossary.html