Словарь терминов
-
>>> -
Стандартное приглашение 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__()возвращает awaitable-объект, который выполнит тело функции асинхронного генератора до следующего выраженияyield.Каждый
yieldвременно приостанавливает обработку, запоминая состояние выполнения (включая локальные переменные и ожидающие инструкции try). Когда *итератор асинхронного генератора* эффективно возобновляется с другим awaitable, возвращаемым__anext__(), он возобновляется с того места, где остановился. См. PEP 492 и PEP 525. -
asynchronous iterable -
Объект, который можно использовать в инструкции
async for. Должен возвращать асинхронный итератор из метода__aiter__(). Введено в PEP 492. -
asynchronous iterator
-
Объект, реализующий методы
__aiter__()и__anext__().__anext__должен возвращать объект awaitable.async forразрешает awaitable объекты, возвращаемые методом асинхронного итератора__anext__(), до тех пор, пока не будет вызвано исключениеStopAsyncIteration. Введено в PEP 492. -
attribute -
Значение, связанное с объектом, к которому обращаются по имени с помощью точечных выражений. Например, если у объекта o есть атрибут a, к нему обращаются как o.a.
-
awaitable -
Объект, который может быть использован в выражении
await. Может быть генератором или объектом с методом__await__(). См. также PEP 492. -
BDFL -
Благожелательный диктатор на всю жизнь, ака Гвидо ван Россум, создатель Python.
-
binary file -
Объект файла, способный читать и записывать байтовые объекты. Примерами двоичных файлов являются файлы, открытые в двоичном режиме (
'rb','wb'или'rb+'),sys.stdin.buffer,sys.stdout.buffer, а также экземплярыio.BytesIOиgzip.GzipFile.См. также текстовый файл для объекта файла, способного читать и записывать объекты
str. -
bytes-like object -
Объект, поддерживающий Протокол буфера и может экспортировать C-смежный буфер. Это включает все объекты
bytes,bytearrayиarray.array, а также многие распространённые объектыmemoryview. Байтовые объекты могут быть использованы для различных операций с двоичными данными; это включает сжатие, сохранение в двоичном файле и отправку по сокету.Некоторые операции требуют, чтобы двоичные данные были изменяемыми. В документации они часто упоминаются как «изменяемые байтовые объекты». Примеры изменяемых объектов буфера включают
bytearrayиmemoryviewобъектаbytearray. Другие операции требуют, чтобы двоичные данные хранились в неизменяемых объектах («только для чтения байтовые объекты»); примерами таких объектов являютсяbytesиmemoryviewобъектаbytes. -
bytecode -
Исходный код Python компилируется в байткод — внутреннее представление программы Python в интерпретаторе CPython. Байткод также кэшируется в файлах
.pyc, чтобы выполнение одного и того же файла было быстрее во второй раз (можно избежать повторной компиляции из исходного кода в байткод). Этот «промежуточный язык» выполняется на виртуальной машине, которая выполняет машинный код, соответствующий каждому байткоду. Обратите внимание, что байткод не должен работать между различными виртуальными машинами Python, и не гарантируется стабильность между выпусками Python.Список инструкций байткода можно найти в документации по модулю dis.
-
callback -
Подпрограмма-функция, которая передаётся в качестве аргумента для выполнения в какой-то момент в будущем.
-
class -
Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.
-
class variable -
Переменная, определённая в классе и предназначенная для изменения только на уровне класса (то есть не в экземпляре класса).
-
coercion -
Неявное преобразование экземпляра одного типа в другой во время операции, которая включает два аргумента одного типа. Например,
int(3.15)преобразует число с плавающей запятой в целое число3, но в3+4.5, каждый аргумент имеет другой тип (один int, один float), и оба должны быть преобразованы в один тип перед добавлением, иначе будет вызвано исключение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 -
Переменная, которая может иметь разные значения в зависимости от контекста. Это похоже на 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(...): ... f = staticmethod(f) @staticmethod def f(...): ...Аналогичный принцип существует для классов, но используется реже. Подробнее о декораторах см. документацию по определению функций и определению классов.
-
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 -
Синоним для объекта файла.
-
finder -
Объект, пытающийся найти загрузчик для импортируемого модуля.
Начиная с Python 3.3, существуют два типа поиска: поиск метапутей для использования с
sys.meta_pathи поиск по элементам пути для использования сsys.path_hooks.См. PEP 302, PEP 420 и PEP 451 для более подробной информации.
-
floor division
-
Математическое деление, округляющее вниз до ближайшего целого числа. Оператор целочисленного деления —
//. Например, выражение11 // 4вычисляется как2в отличие от2.75, возвращаемого обычным делением чисел с плавающей точкой. Обратите внимание, что(-11) // 4равно-3, так как это-2.75, округлённое вниз. См. PEP 238. -
function -
Последовательность операторов, которая возвращает некоторое значение вызывающей стороне. Ей также можно передать ноль или более аргументов, которые могут использоваться в выполнении тела. См. также параметр, метод и раздел Определения функций.
-
function annotation -
Аннотация параметра или значения возврата функции.
Аннотации функций обычно используются для подсказок типов: например, эта функция должна принимать два
intаргумента и должна также иметьintзначение возврата:def sum_two_numbers(a: int, b: int) -> int: return a + b
Синтаксис аннотаций функций объяснён в разделе Определения функций.
См. аннотацию переменной и PEP 484, которые описывают эту функциональность.
-
__future__ -
Псевдомодуль, который программисты могут использовать для включения новых функций языка, несовместимых с текущим интерпретатором.
Импортировав модуль
__future__и проанализировав его переменные, вы можете увидеть, когда новая функция была впервые добавлена в язык и когда она станет стандартной:>>> import __future__ >>> __future__.division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
-
garbage collection -
Процесс освобождения памяти, когда она больше не используется. Python выполняет сборку мусора с помощью подсчёта ссылок и циклического сборщика мусора, который способен обнаруживать и разрывать циклы ссылок. Сборщик мусора можно управлять с помощью модуля
gc. -
generator -
Функция, возвращающая генератор итератор. Она выглядит как обычная функция, за исключением того, что содержит выражения
yieldдля создания последовательности значений, которые можно использовать в цикле for или получать по одному с помощью функцииnext().Обычно относится к генераторной функции, но в некоторых контекстах может относиться к генераторному итератору. В случаях, когда предполагаемое значение не ясно, использование полных терминов избегает двусмысленности.
-
generator iterator -
Объект, созданный генераторной функцией.
Каждый
yieldвременно приостанавливает обработку, запоминая состояние выполнения (включая локальные переменные и ожидающие инструкции try). При возобновлении генераторного итератора он продолжает с того места, где остановился (в отличие от функций, которые начинаются с нуля при каждом вызове). -
generator expression -
Выражение, возвращающее итератор. Оно выглядит как обычное выражение, за которым следует
forпредложение, определяющее переменную цикла, диапазон и необязательноеifпредложение. Объединённое выражение генерирует значения для внешней функции:>>> sum(i*i for i in range(10)) # sum of squares 0, 1, 4, ... 81 285
-
generic function -
Функция, состоящая из нескольких функций, реализующих одну и ту же операцию для разных типов. Реализация, которая должна использоваться во время вызова, определяется алгоритмом диспетчеризации.
См. также запись в глоссарии однократной диспетчеризации, декоратор
functools.singledispatch()и PEP 443. -
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. Попытка сделать это с итератором вернет тот же исчерпанный объект итератора, используемый в предыдущем проходе итерации, что заставит его казаться пустым контейнером.Дополнительную информацию можно найти в Типы итераторов.
-
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(). Примеры создания и использования функций ключей см. в разделе Сортировка HOW TO. -
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— абстрактный базовый класс. -
magic method -
Неформальный синоним для специального метода.
-
mapping
-
Объект-контейнер, поддерживающий произвольный поиск по ключам и реализующий методы, указанные в
MappingилиMutableMappingабстрактных базовых классах. Примеры включаютdict,collections.defaultdict,collections.OrderedDictиcollections.Counter. -
meta path finder -
Поиск, возвращаемый в результате поиска в
sys.meta_path. Поиск по мета-пути связан, но отличен от поисковиков по записям пути.См.
importlib.abc.MetaPathFinderдля методов, которые реализуют поисковики по мета-пути. -
metaclass -
Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за взятие этих трёх аргументов и создание класса. Большинство языков объектно-ориентированного программирования предоставляют стандартную реализацию. Что делает Python особенным, так это возможность создания настраиваемых метаклассов. Большинству пользователей этот инструмент не нужен, но при необходимости метаклассы могут предоставить мощные и элегантные решения. Они использовались для ведения журнала доступа к атрибутам, добавления потоковой безопасности, отслеживания создания объектов, реализации синглетонов и многих других задач.
Дополнительную информацию можно найти в Метаклассы.
-
method -
Функция, определённая внутри тела класса. Если вызывается как атрибут экземпляра этого класса, метод получит объект экземпляра в качестве своего первого аргумента (обычно он называется
self). См. функцию и вложенную область видимости. -
method resolution order -
Порядок разрешения методов — это порядок, в котором ищутся базовые классы для члена во время поиска. Подробности об алгоритме, используемом интерпретатором Python с момента выпуска версии 2.3, см. в Порядке разрешения методов Python 2.3.
-
module -
Объект, служащий организационной единицей кода Python. Модули имеют пространство имён, содержащее произвольные объекты Python. Модули загружаются в Python посредством процесса импортирования.
См. также пакет.
-
module spec -
Пространство имён, содержащее информацию, связанную с импортом, используемую для загрузки модуля. Экземпляр
importlib.machinery.ModuleSpec. -
MRO -
mutable -
Изменяемые объекты могут изменить своё значение, но сохраняют свой
id(). См. также неизменяемый. -
named tuple -
Термин «именованный кортеж» относится к любому типу или классу, который наследуется от кортежа, и чьи индексируемые элементы также доступны с помощью именованных атрибутов. Тип или класс может иметь и другие функции.
Несколько встроенных типов являются именованными кортежами, включая значения, возвращаемые
time.localtime()иos.stat(). Ещё один пример —sys.float_info:>>> sys.float_info[1] # indexed access 1024 >>> sys.float_info.max_exp # named field access 1024 >>> isinstance(sys.float_info, tuple) # kind of tuple True
Некоторые именованные кортежи являются встроенными типами (например, приведенные выше примеры). В качестве альтернативы именованный кортеж можно создать из обычного определения класса, которое наследуется от
tupleи которое определяет именованные поля. Такой класс можно написать вручную или создать с помощью функции-фабрикиcollections.namedtuple(). Последний метод также добавляет некоторые дополнительные методы, которые могут отсутствовать в именованных кортежах, написанных вручную или встроенных. -
namespace -
Место хранения переменной. Пространства имён реализуются как словари. Существуют локальные, глобальные и встроенные пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён поддерживают модульность, предотвращая конфликты имён. Например, функции
builtins.openиos.open()различаются по своим пространствам имён. Пространства имён также способствуют читабельности и поддерживаемости, делая ясным, какой модуль реализует функцию. Например, написаниеrandom.seed()илиitertools.islice()делает ясным, что эти функции реализуются модулямиrandomиitertoolsсоответственно. -
namespace package -
Пакет PEP 420, который служит только контейнером для подпакетов. Пространства имён пакетов могут не иметь физического представления, и, в частности, они не похожи на обычный пакет, потому что у них нет
__init__.pyфайла.См. также модуль.
-
nested scope -
Возможность ссылаться на переменную во внешнем определении. Например, функция, определённая внутри другой функции, может ссылаться на переменные во внешней функции. Обратите внимание, что вложенные области видимости по умолчанию работают только для ссылки, а не для присваивания. Локальные переменные как читают, так и записывают во внутренней области видимости. Аналогично, глобальные переменные читают и записывают в глобальное пространство имён.
nonlocalпозволяет записывать во внешние области видимости. -
new-style class -
Старое название для типа классов, сейчас используемых для всех объектов классов. В более ранних версиях Python только классы нового стиля могли использовать новые, универсальные возможности Python, такие как
__slots__, дескрипторы, свойства,__getattribute__(), методы класса и статические методы. -
object -
Любые данные со состоянием (атрибуты или значение) и определённым поведением (методы). Также является конечным базовым классом любого класса нового стиля.
-
package -
Модуль Python, который может содержать подмодули или, рекурсивно, подпакеты. Технически, пакет — это модуль Python с атрибутом
__path__.См. также обычный пакет и пакет пространства имён.
-
parameter
-
Именованное сущность в определении функции (или метода), которая указывает на аргумент (или в некоторых случаях, аргументы), которые может принять функция. Существует пять типов параметров:
-
позиционный-или-именованный: указывает на аргумент, который может быть передан либо позиционно, либо как именованный аргумент. Это стандартный тип параметра, например, foo и bar в следующем:
def func(foo, bar=None): ...
-
только-позиционный: указывает на аргумент, который может быть передан только позиционно. Только-позиционные параметры могут быть определены, включив символ
/в список параметров определения функции после них, например, posonly1 и posonly2 в следующем:def func(posonly1, posonly2, /, positional_or_keyword): ...
-
только-именованный: указывает на аргумент, который может быть передан только по имени. Только-именованные параметры могут быть определены, включив единственный параметр с переменным числом позиционных аргументов или просто
*в списке параметров определения функции перед ними, например, kw_only1 и kw_only2 в следующем:def func(arg, *, kw_only1, kw_only2): ...
-
с переменным числом позиционных аргументов: указывает, что может быть предоставлена произвольная последовательность позиционных аргументов (в дополнение к любым позиционным аргументам, уже принятым другими параметрами). Такой параметр может быть определён, добавив перед именем параметра
*, например, args в следующем:def func(*args, **kwargs): ...
-
с переменным числом именованных аргументов: указывает, что может быть предоставлено произвольное количество именованных аргументов (в дополнение к любым именованным аргументам, уже принятым другими параметрами). Такой параметр может быть определён, добавив перед именем параметра
**, например, kwargs в примере выше.
Параметры могут указывать на необязательные и обязательные аргументы, а также на значения по умолчанию для некоторых необязательных аргументов.
См. также запись в глоссарии аргумент, вопрос в FAQ о разнице между аргументами и параметрами, класс
inspect.Parameter, раздел Определения функций и PEP 362. -
-
path entry -
Единое местоположение на пути импорта, которое использует поисковик по пути для поиска модулей для импорта.
-
path entry finder -
поисковик, возвращаемый вызываемым объектом в
sys.path_hooks(т. е. запись в пути), который знает, как найти модули, используя запись в пути.См.
importlib.abc.PathEntryFinderдля методов, реализуемых поисковиками по записям в пути. -
path entry hook -
Вызываемый объект в списке
sys.path_hook, который возвращает поисковик по пути, если он знает, как найти модули в определённой записи в пути. -
path based finder -
Один из стандартных поисковиков мета-пути, который ищет модули по пути импорта.
-
path-like object -
Объект, представляющий путь в файловой системе. Объект, подобный пути, — это либо объект
str, либоbytes, представляющие путь, либо объект, реализующий протоколos.PathLike. Объект, поддерживающий протоколos.PathLike, может быть преобразован в путь в файловой системеstrилиbytesпутём вызова функцииos.fspath();os.fsdecode()иos.fsencode()могут использоваться для гарантированного получения результатаstrилиbytesсоответственно. Введён в PEP 519. -
PEP -
Предложение по улучшению Python. PEP — это документ, предоставляющий информацию сообществу Python или описывающий новую функцию для Python, его процессов или среды. PEP должен предоставлять краткое техническое описание и обоснование предлагаемых функций.
PEPs предназначены для того, чтобы быть основными механизмами для предложения крупных новых функций, для сбора отзывов сообщества по проблеме и для документирования решений по проектированию, принятых для Python. Автор PEP несет ответственность за формирование консенсуса в сообществе и документирование расходящихся мнений.
См. PEP 1.
-
portion -
Набор файлов в одном каталоге (возможно, хранящихся в файле zip), которые вносят вклад в пакет пространства имён, как определено в PEP 420.
-
positional argument -
См. аргумент.
-
provisional API -
Провизорный API — это API, который преднамеренно исключён из гарантий обратной совместимости стандартной библиотеки. Хотя значительные изменения таких интерфейсов не ожидаются, пока они помечены как провизорные, могут быть внесены несовместимые с обратной совместимостью изменения (вплоть до удаления интерфейса), если это будет сочтено необходимым основными разработчиками. Такие изменения не будут вноситься без необходимости — они будут внесены только в случае обнаружения серьёзных фундаментальных недостатков, которые были упущены до включения API.
Даже для провизорных 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 -
Кодек, который кодирует строки Unicode в байты.
-
text file -
объект файла, способный читать и записывать объекты
str. Часто текстовый файл фактически обращается к потоку данных с байтами и автоматически обрабатывает кодирование текста. Примерами текстовых файлов являются файлы, открытые в текстовом режиме ('r'или'w'),sys.stdin,sys.stdoutи экземплярыio.StringIO.См. также бинарный файл для объекта файла, способного читать и записывать объекты типа байт.
-
triple-quoted string -
Строка, ограниченная тремя экземплярами кавычек (”) или апострофов (‘). Хотя они не предоставляют никаких функций, отсутствующих в строках с одинарными кавычками, они полезны по нескольким причинам. Они позволяют включать неэкранированные одинарные и двойные кавычки внутри строки и могут занимать несколько строк без использования символа продолжения, что особенно полезно при написании строковых документов.
-
type -
Тип объекта Python определяет, какого рода объект это; у каждого объекта есть тип. Тип объекта доступен как его атрибут
__class__или может быть получен с помощьюtype(obj). -
type alias -
Синоним типа, созданный путём присвоения типа идентификатору.
Псевдонимы типов полезны для упрощения подсказок типов. Например:
from typing import List, Tuple def remove_gray_shades( colors: List[Tuple[int, int, int]]) -> List[Tuple[int, int, int]]: passможет быть сделано более читаемым так:
from typing import List, Tuple 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.8/glossary.html