Spec-Zone.ru › Python 3.8

Словарь терминов

>>>

Стандартное приглашение 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
END_OF_DOCUMENT_MARKER

Объект, реализующий методы __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
END_OF_DOCUMENT_MARKER

Математическое деление, округляющее вниз до ближайшего целого числа. Оператор целочисленного деления — //. Например, выражение 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
END_OF_DOCUMENT_MARKER

Аннотация переменной или атрибута класса.

При аннотировании переменной или атрибута класса присваивание необязательно:

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API