Глоссарий¶Glossary
>>>- Приглашение по умолчанию в интерактивной оболочке Python. Часто встречается в примерах кода, которые можно выполнять в интерпретаторе в интерактивном режиме.
...- Стандартное приглашение Python интерактивной оболочки при вводе кода для блока с отступом или внутри пары соответствующих открывающих и закрывающих разделителей (круглых скобок, квадратных скобок или фигурных скобок).
- 2to3
Инструмент, преобразующий код Python 2.x в код Python 3.x путём обработки большинства несовместимостей, которые можно обнаружить при разборе исходного кода и обходе дерева разбора.
2to3 доступен в стандартной библиотеке как
lib2to3; отдельная точка входа предоставляется какTools/scripts/2to3. См. 2to3 – автоматический перевод кода Python 2 в Python 3.- абстрактный базовый класс
- Абстрактные базовые классы дополняют утиную типизацию,
предоставляя способ определения интерфейсов, когда другие подходы, такие как
hasattr(), были бы неуклюжими или вводили бы в заблуждение (например, с магическими методами). ABC вводят виртуальные подклассы – классы, которые не наследуются от данного класса, но всё равно распознаются функциямиisinstance()иissubclass(); см. документацию модуляabc. Python поставляется со многими встроенными ABC для структур данных (в модулеcollections.abc), чисел (в модулеnumbers), потоков (в модулеio), искателей и загрузчиков импорта (в модулеimportlib.abc). Можно создавать собственные ABC с помощью модуляabc. - аргумент
Значение, передаваемое функции (или методу) при вызове функции. Существует два вида аргументов:
именованный аргумент: аргумент, перед которым стоит идентификатор (например,
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.
- асинхронный контекстный менеджер
- Объект, управляющий окружением в операторе
async withпутём определения методов__aenter__()и__aexit__(). Введён в PEP 492. - асинхронный итерируемый объект
- Объект, который можно использовать в операторе
async for. Из своего метода__aiter__()должен возвращать асинхронный итератор. Введён PEP 492. - асинхронный итератор
- Объект, реализующий методы
__aiter__()и__anext__().__anext__должен возвращать объект ожидаемый объект.async forразрешает ожидаемый объект, возвращённый методом__anext__()асинхронного итератора, пока не возникнет исключениеStopAsyncIteration. Введено PEP 492. - атрибут
- Значение, связанное с объектом, на которое ссылаются по имени с помощью выражений с точкой. Например, если объект o имеет атрибут a, на него можно сослаться как o.a.
- ожидаемый объект
- Объект, который можно использовать в выражении
await. Это может быть корутина или объект с методом__await__(). См. также PEP 492. - BDFL
- Доброжелательный диктатор на всю жизнь, также известный как Гвидо ван Россум, создатель Python.
- двоичный файл
Объект файловый объект, способный читать и записывать байтоподобные объекты. Примеры двоичных файлов: файлы, открытые в двоичном режиме (
'rb','wb'или'rb+'),sys.stdin.buffer,sys.stdout.buffer, а также экземплярыio.BytesIOиgzip.GzipFile.См. также
Текстовый файл читает и записывает объекты
str.- байтоподобный объект
Объект, поддерживающий протокол буфера и способный экспортировать C-непрерывный буфер. Сюда входят все объекты
bytes,bytearrayиarray.array, а также многие распространённые объектыmemoryview. Байтоподобные объекты могут использоваться в различных операциях с двоичными данными: сжатие, сохранение в двоичный файл, отправка через сокет.Некоторым операциям требуются изменяемые двоичные данные. В документации они часто называются «байтоподобные объекты для чтения и записи». Примерами изменяемых буферных объектов являются
bytearrayиmemoryviewобъектаbytearray. Другие операции требуют хранения двоичных данных в неизменяемых объектах («байтоподобные объекты только для чтения»); примеры включаютbytesиmemoryviewобъектаbytes.- байткод
Исходный код Python компилируется в байткод – внутреннее представление программы Python в интерпретаторе CPython. Байткод также кэшируется в файлах
.pyc, чтобы при повторном выполнении того же файла работа происходила быстрее (повторная компиляция из исходного кода в байткод не требуется). Этот «промежуточный язык», как говорят, выполняется на виртуальной машине, которая исполняет машинный код, соответствующий каждому байткоду. Следует отметить, что байткоды не должны работать в разных виртуальных машинах Python и не обязаны быть стабильными между версиями Python.Список инструкций байткода можно найти в документации модуля dis.
- класс
- Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.
- приведение типов
- Неявное преобразование экземпляра одного типа в другой во время
операции, включающей два аргумента одного типа. Например,
int(3.15)преобразует число с плавающей запятой в целое3, но в3+4.5каждый аргумент имеет разный тип (один int, один float), и оба должны быть преобразованы к одному типу перед сложением, иначе будет возбуждено исключениеTypeError. Без приведения типов программисту пришлось бы нормализовать все аргументы даже совместимых типов к одному значению, например,float(3)+4.5вместо3+4.5. - комплексное число
- Расширение привычной системы действительных чисел, в котором все числа выражаются как сумма действительной и мнимой частей. Мнимые числа – это действительные кратные мнимой единицы (квадратный корень из
-1), часто обозначаемойiв математике илиjв инженерии. Python имеет встроенную поддержку комплексных чисел, которые записываются в этой последней нотации; мнимая часть записывается с суффиксомj, например,3+1j. Чтобы получить доступ к комплексным аналогам модуляmath, используйтеcmath. Использование комплексных чисел – довольно продвинутая математическая возможность. Если нет очевидной необходимости в них, их почти наверняка можно безопасно игнорировать. - контекстный менеджер
- Объект, управляющий окружением в операторе
withпутём определения методов__enter__()и__exit__(). См. PEP 343. - непрерывный
Буфер считается непрерывным, если он является либо C-непрерывным, либо непрерывным по Фортрану. Нулевые буферы являются C- и Fortran-непрерывными. В одномерных массивах элементы должны располагаться в памяти рядом друг с другом, в порядке возрастания индексов, начиная с нуля. В многомерных C-непрерывных массивах последний индекс меняется быстрее всего при обходе элементов в порядке адресов памяти. Однако в массивах, непрерывных по Фортрану, первым меняется первый индекс.
- корутина
- Корутины – это более обобщённая форма подпрограмм. Подпрограммы входят в одной точке и выходят в другой. Корутины можно входить, выходить и возобновлять во многих разных точках. Они могут быть реализованы с помощью оператора
async def. См. также PEP 492. - корутинная функция
- Функция, возвращающая объект корутина. Корутинная
функция может быть определена с помощью оператора
async defи может содержать ключевые словаawait,async forиasync with. Они были введены в PEP 492. - CPython
- Каноническая реализация языка программирования Python, распространяемая на python.org. Термин «CPython» используется, когда необходимо отличить эту реализацию от других, таких как Jython или IronPython.
- декоратор
Функция, возвращающая другую функцию, обычно применяется как преобразование функции с помощью синтаксиса
@wrapper. Распространённые примеры декораторов:classmethod()иstaticmethod().Синтаксис декоратора – всего лишь синтаксический сахар, следующие два определения функций семантически эквивалентны:
def f(...): ... f = staticmethod(f) @staticmethod def f(...): ...
Та же концепция существует и для классов, но там используется реже. См. документацию по определениям функций и определениям классов для получения дополнительной информации о декораторах.
- дескриптор
Любой объект, определяющий методы
__get__(),__set__()или__delete__(). Когда атрибут класса является дескриптором, его особое поведение при связывании срабатывает при поиске атрибута. Обычно использование a.b для получения, установки или удаления атрибута ищет объект с именем b в словаре класса для a, но если b является дескриптором, то вызывается соответствующий метод дескриптора. Понимание дескрипторов – ключ к глубокому пониманию Python, поскольку они лежат в основе многих возможностей, включая функции, методы, свойства, методы класса, статические методы и ссылки на суперклассы.Подробнее о методах дескрипторов см. в Implementing Descriptors.
- словарь
- Ассоциативный массив, в котором произвольные ключи сопоставляются значениям. Ключами могут быть любые объекты с методами
__hash__()и__eq__(). В Perl называется хешем. - представление словаря
- Объекты, возвращаемые методами
dict.keys(),dict.values()иdict.items(), называются представлениями словаря. Они предоставляют динамическое представление записей словаря, то есть при изменении словаря представление отражает эти изменения. Чтобы преобразовать представление словаря в обычный список, используйтеlist(dictview). См. Объекты представлений словаря. - докстринг
- Строковый литерал, который появляется как первое выражение в классе,
функции или модуле. Хотя он игнорируется при выполнении кода
внутри блока, компилятор распознаёт его и помещает в атрибут
__doc__содержащего класса, функции или модуля. Поскольку к нему можно получить доступ через интроспекцию, это каноническое место для документации объекта. - утиная типизация
- Стиль программирования, который не проверяет тип объекта для определения,
обладает ли он нужным интерфейсом; вместо этого метод или атрибут просто
вызывается или используется («Если это выглядит как утка и крякает как утка,
значит, это утка»). Делая упор на интерфейсы, а не на конкретные типы,
хорошо спроектированный код повышает гибкость за счёт полиморфной
замены. Утиная типизация избегает проверок с помощью
type()илиisinstance(). (Однако утиную типизацию можно дополнить абстрактными базовыми классами.) Вместо этого она обычно использует проверкиhasattr()или программирование в стиле EAFP. - EAFP
- Легче попросить прощения, чем разрешения. Этот распространённый стиль
программирования на Python предполагает наличие допустимых ключей или атрибутов и перехватывает
исключения, если предположение оказывается неверным. Этот чистый и быстрый стиль
характеризуется наличием множества операторов
tryиexcept. Этот подход противопоставляется стилю LBYL, распространённому во многих других языках, таких как C. - выражение
- Фрагмент синтаксиса, который можно вычислить для получения некоторого значения. Иными словами, выражение – это совокупность элементов выражения, таких как литералы, имена, доступ к атрибутам, операторы или вызовы функций, которые возвращают значение. В отличие от многих других языков, не все языковые конструкции являются выражениями. Существуют также операторы, которые не могут использоваться как выражения, например
if. Присваивания также являются операторами, а не выражениями. - модуль-расширение
- Модуль, написанный на C или C++, использующий C API Python для взаимодействия с ядром и пользовательским кодом.
- файловый объект
Объект, предоставляющий файловый API (с методами, такими как
read()илиwrite()) для нижележащего ресурса. В зависимости от способа создания, файловый объект может обеспечивать доступ к реальному файлу на диске или к другому типу хранилища или устройства связи (например, стандартный ввод/вывод, буферы в памяти, сокеты, каналы и т.д.). Файловые объекты также называются объектами, подобными файлам или потоками данных.There are actually three categories of file objects: raw binary files, buffered binary files and text files. Their interfaces are defined in the
iomodule. The canonical way to create a file object is by using theopen()function.- файлоподобный объект
- Синоним для файлового объекта.
- искатель
Объект, который пытается найти загрузчик для импортируемого модуля.
Начиная с Python 3.3, существуют два типа искателей: мета-искатели путей для использования с
sys.meta_path, и искатели элементов путей для использования сsys.path_hooks.См. PEP 302, PEP 420 и PEP 451 для получения более подробной информации.
- целочисленное деление
- Математическое деление, округляющее результат до ближайшего целого вниз. Оператор деления с округлением вниз –
//. Например, выражение11 // 4вычисляется в2в отличие от2.75, возвращаемого при истинном делении с плавающей запятой. Обратите внимание, что(-11) // 4равно-3, потому что это-2.75, округлённое вниз. См. PEP 238. - функция
- Последовательность инструкций, которая возвращает некоторое значение вызывающему коду. В неё также можно передать ноль или более аргументов, которые могут использоваться при выполнении тела. См. также параметр, метод, и раздел Определения функций.
- аннотация функции
Произвольное значение метаданных, связанное с параметром функции или возвращаемым значением. Его синтаксис описан в разделе Определения функций. Аннотации могут быть получены через специальный атрибут
__annotations__объекта функции.Сам Python не придаёт никакого особого значения аннотациям функций. Они предназначены для интерпретации сторонними библиотеками или инструментами. См. PEP 3107, где описаны некоторые из их возможных применений.
- future
Псевдомодуль, с помощью которого программисты могут включать новые возможности языка, несовместимые с текущим интерпретатором.
Импортировав модуль
__future__и вычислив его переменные, можно увидеть, когда новая возможность была впервые добавлена в язык и когда она становится используемой по умолчанию:>>> import __future__ >>> __future__.division _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
- сборка мусора
- Процесс освобождения памяти, когда она больше не используется. Python выполняет сборку мусора с помощью подсчёта ссылок и циклического сборщика мусора, который способен обнаруживать и разрывать циклические ссылки.
- генератор
Функция, возвращающая итератор генератора. Она выглядит как обычная функция, за исключением того, что содержит выражения
yieldдля получения последовательности значений, которые можно использовать в цикле for или получать по одному с помощью функцииnext().Обычно относится к функции-генератору, но в некоторых контекстах может относиться к итератору генератора. Если предполагаемое значение неясно, использование полных терминов позволяет избежать неоднозначности.
- итератор генератора
Объект, созданный функцией генератора.
Каждый
yieldвременно приостанавливает обработку, запоминая расположение и состояние выполнения (включая локальные переменные и ожидающие операторы try). Когда итератор генератора возобновляется, он продолжает с того места, где остановился (в отличие от функций, которые начинают заново при каждом вызове).- генераторное выражение
Выражение, которое возвращает итератор. Оно выглядит как обычное выражение, за которым следует выражение
for, определяющее переменную цикла, диапазон и необязательное выражениеif. Полученное выражение генерирует значения для объемлющей функции:>>> sum(i*i for i in range(10)) # сумма квадратов 0, 1, 4, ... 81 285
- обобщённая функция
Функция, состоящая из нескольких функций, реализующих одну и ту же операцию для разных типов. Какая реализация должна использоваться при вызове, определяется алгоритмом диспетчеризации.
См. также статью глоссария одиночная диспетчеризация, декоратор
functools.singledispatch()и PEP 443.- GIL
- См. глобальная блокировка интерпретатора.
- глобальная блокировка интерпретатора
Механизм, используемый интерпретатором CPython для обеспечения того, чтобы только один поток выполнял байт-код Python в каждый момент времени. Это упрощает реализацию CPython, делая объектную модель (включая критические встроенные типы, такие как
dict) неявно безопасной при конкурентном доступе. Блокировка всего интерпретатора упрощает многопоточность интерпретатора, но ценой потери большей части параллелизма, обеспечиваемого многопроцессорными машинами.Однако некоторые расширяющие модули, как стандартные, так и сторонние, спроектированы так, чтобы освобождать GIL при выполнении вычислительно интенсивных задач, таких как сжатие или хеширование. Кроме того, GIL всегда освобождается при выполнении операций ввода-вывода.
Прежние попытки создать «свободно-поточный» интерпретатор (тот, который блокирует общие данные с гораздо более мелкой гранулярностью) не увенчались успехом, потому что производительность страдала в типичном случае с одним процессором. Считается, что преодоление этой проблемы производительности сделало бы реализацию гораздо более сложной и, следовательно, более дорогой в сопровождении.
- хешируемый
Объект называется хешируемым, если он имеет хеш-значение, которое никогда не меняется за время его существования (для этого требуется метод
__hash__()), и может сравниваться с другими объектами (для этого требуется метод__eq__()). Хешируемые объекты, равные при сравнении, должны иметь одинаковое хеш-значение.Хешируемость позволяет использовать объект в качестве ключа словаря и элемента множества, поскольку эти структуры данных внутренне используют хеш-значение.
Все неизменяемые встроенные объекты Python хешируемы; изменяемые контейнеры (такие как списки или словари) – нет. Объекты, которые являются экземплярами пользовательских классов, по умолчанию хешируемы. Все они сравниваются неравными (кроме сравнения с самими собой), и их хеш-значение вычисляется из их
id().- IDLE
- Интегрированная среда разработки для Python. IDLE – это базовый редактор и среда интерпретатора, которая поставляется со стандартной дистрибуцией Python.
- неизменяемый
- Объект с фиксированным значением. К неизменяемым объектам относятся числа, строки и кортежи. Такой объект нельзя изменить. Если требуется сохранить другое значение, необходимо создать новый объект. Они играют важную роль там, где требуется постоянное хеш-значение, например в качестве ключа в словаре.
- путь импорта
- Список расположений (или записей пути), которые просматриваются искателем на основе пути для поиска модулей для импорта. Во время импорта этот список расположений обычно берётся из
sys.path, но для подпакетов он также может браться из атрибута__path__родительского пакета. - импортирование
- Процесс, благодаря которому код Python в одном модуле становится доступным коду Python в другом модуле.
- импортёр
- Объект, который одновременно находит и загружает модуль; объект, являющийся как искателем, так и загрузчиком.
- интерактивный
- Python имеет интерактивный интерпретатор, что позволяет вводить инструкции и выражения в приглашении интерпретатора, немедленно выполнять их и видеть результаты. Для этого достаточно запустить
pythonбез аргументов (возможно, выбрав его из главного меню компьютера). Это очень мощный способ проверки новых идей или изучения модулей и пакетов (помнитеhelp(x)). - интерпретируемый
- Python является интерпретируемым языком, в отличие от компилируемых, хотя различие может быть размытым из-за наличия компилятора байткода. Это означает, что исходные файлы можно запускать напрямую, без явного создания исполняемого файла, который затем выполняется. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя их программы, как правило, выполняются медленнее. См. также интерактивный.
- завершение работы интерпретатора
При запросе на завершение работы интерпретатор Python переходит в специальную фазу, на которой постепенно освобождает все выделенные ресурсы, такие как модули и различные критические внутренние структуры. Он также несколько раз вызывает сборщик мусора. Это может вызвать выполнение кода в пользовательских деструкторах или колбэках слабых ссылок. Код, выполняемый во время фазы завершения работы, может столкнуться с различными исключениями, поскольку используемые им ресурсы могут перестать работать (типичные примеры – библиотечные модули или механизм предупреждений).
Основная причина завершения работы интерпретатора – завершение выполнения
__main__модуля или запущенного скрипта.- итерируемый объект
- Объект, способный возвращать свои элементы по одному. Примеры итерируемых объектов включают все последовательности (такие как
list,strиtuple) и некоторые непоследовательные типы, напримерdict, файловые объекты, а также объекты любых классов, определённых с методом__iter__()или__getitem__(). Итерируемые объекты могут использоваться в циклеforи во многих других местах, где требуется последовательность (zip(),map(), …). Когда итерируемый объект передаётся в качестве аргумента встроенной функцииiter(), она возвращает итератор для этого объекта. Этот итератор годится для одного прохода по набору значений. При работе с итерируемыми объектами обычно не нужно вызыватьiter()или самому иметь дело с объектами-итераторами. Операторforделает это автоматически, создавая временную безымянную переменную для хранения итератора на время цикла. См. также итератор, последовательность и генератор. - итератор
Объект, представляющий поток данных. Повторные вызовы метода
__next__()итератора (или передача его встроенной функцииnext()) возвращают последовательные элементы потока. Когда данные заканчиваются, возбуждается исключениеStopIteration. После этого объект итератора исчерпан, и любой дальнейший вызов его метода__next__()снова возбуждаетStopIteration. Итераторы должны иметь метод__iter__(), который возвращает сам объект итератора, поэтому каждый итератор также является итерируемым и может использоваться в большинстве мест, где принимаются другие итерируемые объекты. Одним заметным исключением является код, который пытается выполнить многократные проходы итерации. Объект-контейнер (например,list) создаёт новый итератор каждый раз, когда вы передаёте его функцииiter()или используете в циклеfor. Попытка сделать то же самое с итератором приведёт к возврату того же самого исчерпанного объекта итератора, использованного в предыдущем проходе, из-за чего он будет выглядеть как пустой контейнер.Дополнительную информацию можно найти в Iterator Types.
- функция ключа
Функция-ключ или функция сортировки – это вызываемый объект, возвращающий значение, используемое для сортировки или упорядочивания. Например,
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(). Примеры создания и использования функций ключа см. в Sorting HOW TO.- именованный аргумент
- См. аргумент.
- lambda
- Анонимная встроенная функция, состоящая из одного выражения,
которое вычисляется при вызове функции. Синтаксис создания
лямбда-функции:
lambda [arguments]: expression - LBYL
Сначала проверь, потом делай (Look before you leap). Этот стиль кодирования явно проверяет предусловия перед вызовами или обращениями. Этот стиль противоположен подходу EAFP и характеризуется наличием множества инструкций
if.В многопоточной среде подход LBYL может привести к состоянию гонки между «проверкой» и «действием». Например, код
if key in mapping: return mapping[key]может завершиться ошибкой, если другой поток удалит ключ из отображения после проверки, но до обращения. Эту проблему можно решить с помощью блокировок или используя подход EAFP.- list
- Встроенная в Python последовательность. Несмотря на название, она больше похожа на массив в других языках, чем на связный список, поскольку доступ к элементам осуществляется за O(1).
- генератор списка
- Компактный способ обработки всех или части элементов последовательности и
возврата списка с результатами.
result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]генерирует список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Предложениеifявляется необязательным. Если оно опущено, обрабатываются все элементы вrange(256). - загрузчик
- Объект, который загружает модуль. Он должен определять метод с именем
load_module(). Загрузчик обычно возвращается искателем. См. PEP 302 для подробностей иimportlib.abc.Loaderдля абстрактного базового класса. - отображение
- Контейнер, поддерживающий произвольный поиск по ключу и реализующий методы, указанные в
MappingилиMutableMappingабстрактных базовых классов. Примеры включаютdict,collections.defaultdict,collections.OrderedDictиcollections.Counter. - искатель мета-пути
Искатель, возвращаемый поиском по
sys.meta_path. Мета-искатели путей связаны с искателями записей путей, но отличаются от них.См.
importlib.abc.MetaPathFinderдля получения списка методов, реализуемых мета-искателями путей.- метакласс
Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за приём этих трёх аргументов и создание класса. Большинство объектно-ориентированных языков программирования предоставляют реализацию по умолчанию. Особенность Python в том, что можно создавать пользовательские метаклассы. Большинству пользователей этот инструмент никогда не понадобится, но когда возникает необходимость, метаклассы могут предоставить мощные и элегантные решения. Они использовались для логирования доступа к атрибутам, добавления потокобезопасности, отслеживания создания объектов, реализации синглтонов и многих других задач.
Дополнительную информацию можно найти в Настройка создания классов.
- метод
- Функция, определённая внутри тела класса. При вызове как атрибут экземпляра этого класса метод получает объект экземпляра в качестве первого аргумента (обычно называемого
self). См. функцию и вложенную область видимости. - порядок разрешения методов
- Порядок разрешения методов – это порядок, в котором базовые классы просматриваются для поиска атрибута. См. Порядок разрешения методов Python 2.3 для подробностей алгоритма, используемого интерпретатором Python начиная с версии 2.3.
- модуль
Объект, служащий организационной единицей кода Python. Модули имеют пространство имён, содержащее произвольные объекты Python. Модули загружаются в Python в процессе импортирования.
См. также пакет.
- спецификация модуля
- Пространство имён, содержащее информацию, связанную с импортом, используемую для загрузки модуля. Экземпляр
importlib.machinery.ModuleSpec. - MRO
- См. порядок разрешения методов.
- изменяемый
- Изменяемые объекты могут менять своё значение, но сохраняют свой
id(). См. также неизменяемый. - именованный кортеж
Любой класс, похожий на кортеж, чьи индексируемые элементы также доступны через именованные атрибуты (например,
time.localtime()возвращает объект, похожий на кортеж, где year доступен либо по индексу, напримерt[0], либо через именованный атрибут, напримерt.tm_year).Именованный кортеж может быть встроенным типом, таким как
time.struct_time, или может быть создан с помощью обычного определения класса. Полнофункциональный именованный кортеж также может быть создан с помощью фабричной функцииcollections.namedtuple(). Последний подход автоматически предоставляет дополнительные возможности, такие как самодокументируемое представление, напримерEmployee(name='jones', title='programmer').- пространство имён
- Место, где хранится переменная. Пространства имён реализованы как словари. Существуют локальное, глобальное и встроенное пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён способствуют модульности, предотвращая конфликты имён. Например, функции
builtins.openиos.open()различаются своими пространствами имён. Пространства имён также облегчают читаемость и поддержку, показывая, какой модуль реализует функцию. Например, записьrandom.seed()илиitertools.islice()ясно даёт понять, что эти функции реализованы модулямиrandomиitertoolsсоответственно. - пакет пространства имён
PEP 420 пакет, который служит только контейнером для подпакетов. Пространства имён пакетов могут не иметь физического представления и, в частности, не похожи на обычный пакет, так как у них нет файла
__init__.py.См. также модуль.
- вложенная область видимости
- Возможность обращаться к переменной из внешнего определения. Например, функция, определённая внутри другой функции, может обращаться к переменным внешней функции. Обратите внимание: вложенные области видимости по умолчанию работают только для чтения, но не для присваивания. Локальные переменные и читаются, и записываются в самой внутренней области. Аналогично, глобальные переменные читаются и записываются в глобальном пространстве имён.
nonlocalпозволяет записывать во внешние области. - класс нового стиля
- Устаревшее название для разновидности классов, которая сейчас используется для всех объектов-классов. В более ранних версиях Python только классы нового стиля могли использовать новые универсальные возможности Python, такие как
__slots__, дескрипторы, свойства,__getattribute__(), методы класса и статические методы. - объект
- Любые данные с состоянием (атрибуты или значение) и определённым поведением (методы). Также конечный базовый класс любого класса нового стиля.
- пакет
Модуль Python модуль, который может содержать подмодули или, рекурсивно, подпакеты. Технически пакет – это модуль Python с атрибутом
__path__.См. также обычный пакет и пакет пространства имён.
- параметр
Именованная сущность в определении функции (или метода), которая указывает на аргумент (или в некоторых случаях аргументы), который функция может принимать. Существует пять видов параметров:
позиционный или ключевой: указывает аргумент, который может быть передан либо позиционно, либо в качестве ключевого аргумента. Это вид параметра по умолчанию, например foo и bar в следующем примере:
def func(foo, bar=None): ...
позиционно-только: указывает аргумент, который может быть передан только по позиции. В Python нет синтаксиса для определения позиционно-только параметров. Однако некоторые встроенные функции имеют позиционно-только параметры (например,
abs()).
только ключевой: указывает аргумент, который может быть передан только по ключевому слову. Параметры только по ключевым словам можно определить, включив один вариативно-позиционный параметр или просто
*в список параметров определения функции перед ними, например kw_only1 и kw_only2 в следующем примере:def func(arg, *, kw_only1, kw_only2): ...
вариативно-позиционный: указывает, что может быть предоставлена произвольная последовательность позиционных аргументов (в дополнение к любым позиционным аргументам, уже принимаемым другими параметрами). Такой параметр можно определить, добавив
*перед именем параметра, например args в следующем примере:def func(*args, **kwargs): ...
вариативно-ключевой: указывает, что может быть предоставлено произвольно много именованных аргументов (в дополнение к любым именованным аргументам, уже принимаемым другими параметрами). Такой параметр можно определить, добавив
**перед именем параметра, например kwargs в примере выше.
Параметры могут определять как необязательные, так и обязательные аргументы, а также значения по умолчанию для некоторых необязательных аргументов.
См. также статью глоссария аргумент, вопрос из FAQ о разнице между аргументами и параметрами, класс
inspect.Parameter, раздел Определения функций и PEP 362.- элемент пути
- Отдельное расположение в пути импорта, которое поисковик на основе пути просматривает для поиска модулей для импорта.
- искатель элементов пути
Поисковик, возвращаемый вызываемым объектом из
sys.path_hooks(т.е. перехватчиком элемента пути), который умеет находить модули по заданному элементу пути.Методы, которые реализуют поисковики элементов пути, описаны в
importlib.abc.PathEntryFinder.- перехватчик элемента пути
- Вызываемый объект из списка
sys.path_hook, который возвращает поисковик элемента пути, если он умеет находить модули на конкретном элементе пути. - искатель на основе пути
- Один из поисковиков по мета-пути по умолчанию, который ищет модули в пути импорта.
- часть
- Набор файлов в одном каталоге (возможно, хранящемся в zip-файле), которые входят в пакет пространства имён, как определено в PEP 420.
- позиционный аргумент
- См. аргумент.
- экспериментальный API
Временный API – это API, который намеренно исключён из гарантий обратной совместимости стандартной библиотеки. Хотя серьёзные изменения таких интерфейсов не ожидаются, пока они помечены как временные, возможны несовместимые с предыдущими версиями изменения (вплоть до удаления интерфейса), если основные разработчики сочтут это необходимым. Такие изменения не будут вноситься без веской причины – они произойдут только в случае обнаружения серьёзных фундаментальных недостатков, которые были упущены до включения API.
Даже для временных API несовместимые с предыдущими версиями изменения рассматриваются как «крайняя мера» – по-прежнему будут предприниматься все попытки найти обратно совместимое решение для любых выявленных проблем.
Этот процесс позволяет стандартной библиотеке продолжать развиваться со временем, не закрепляя проблемные проектные ошибки на длительные периоды времени. Подробнее см. PEP 411.
- экспериментальный пакет
- См. временный API.
- Python 3000
- Прозвище для линейки релизов Python 3.x (придуманное давно, когда выход версии 3 был чем-то из далёкого будущего). Также сокращённо называется «Py3k».
- Питоничный
Идея или фрагмент кода, который строго следует наиболее распространённым идиомам языка Python, а не реализует код с использованием концепций, общих для других языков. Например, распространённая идиома в Python – цикл по всем элементам итерируемого объекта с помощью оператора
for. Многие другие языки не имеют такой конструкции, поэтому люди, незнакомые с Python, иногда используют вместо этого числовой счётчик:for i in range(len(food)): print(food[i])
В отличие от более чистого, питоничного метода:
for piece in food: print(piece)
- полное имя
Точечное имя, показывающее «путь» от глобальной области видимости модуля к классу, функции или методу, определённым в этом модуле, как определено в 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'
- счётчик ссылок
- Количество ссылок на объект. Когда счётчик ссылок объекта
падает до нуля, объект освобождается. Подсчёт ссылок обычно
невидим для кода Python, но является ключевым элементом
реализации CPython. Модуль
sysопределяет функциюgetrefcount(), которую программисты могут вызывать для получения счётчика ссылок для конкретного объекта. - обычный пакет
Традиционный пакет, например каталог, содержащий файл
__init__.py.См. также пространство имён пакета.
- slots
- Объявление внутри класса, которое экономит память, заранее выделяя место для атрибутов экземпляра и устраняя словари экземпляров. Хотя этот метод популярен, его правильное применение требует некоторой аккуратности, и его лучше использовать только в редких случаях, когда в приложении с критичной памятью создаётся большое количество экземпляров.
- последовательность
Итерируемый объект, который поддерживает эффективный доступ к элементам по целочисленным индексам через специальный метод
__getitem__()и определяет метод__len__(), возвращающий длину последовательности. Некоторые встроенные типы последовательностей:list,str,tupleиbytes. Обратите внимание, чтоdictтакже поддерживает__getitem__()и__len__(), но считается отображением, а не последовательностью, так как поиск использует произвольные неизменяемые ключи, а не целые числа.Абстрактный базовый класс
collections.abc.Sequenceопределяет гораздо более богатый интерфейс, выходящий за рамки простых__getitem__()и__len__(), добавляяcount(),index(),__contains__()и__reversed__(). Типы, реализующие этот расширенный интерфейс, могут быть явно зарегистрированы с помощьюregister().- одиночная диспетчеризация
- A form of generic function dispatch where the implementation is chosen based on the type of a single argument.
- срез
- Объект, обычно содержащий часть последовательности. Срез
создается с помощью индексации,
[]с двоеточиями между числами, когда указано несколько, как вvariable_name[1:3:5]. Квадратные скобки (индексация) внутри используют объектыslice. - специальный метод
- A method that is called implicitly by Python to execute a certain operation on a type, such as addition. Such methods have names starting and ending with double underscores. Special methods are documented in Special method names.
- инструкция
- A statement is part of a suite (a “block” of code). A statement is either
an expression or one of several constructs with a keyword, such
as
if,whileorfor. - Структурированная последовательность
- Кортеж с именованными элементами. Структурные последовательности предоставляют интерфейс, похожий на именованный кортеж в том, что элементы могут быть доступны либо по индексу, либо как атрибут. Однако у них нет методов именованных кортежей, таких как
_make()или_asdict(). Примеры структурных последовательностей включаютsys.float_infoи возвращаемое значениеos.stat(). - кодировка текста
- Кодек, который кодирует строки Unicode в байты.
- текстовый файл
Объект файла, способный читать и записывать объекты
str. Часто текстовый файл на самом деле обращается к байт-ориентированному потоку данных и автоматически обрабатывает кодировку текста. Примеры текстовых файлов: файлы, открытые в текстовом режиме ('r'или'w'),sys.stdin,sys.stdoutи экземплярыio.StringIO.См. также
Двоичный файл читает и записывает объекты
bytes.- строка в тройных кавычках
- Строка, ограниченная тремя экземплярами кавычек (”) или апострофов (‘). Хотя они не предоставляют никакой функциональности, недоступной в строках с одинарными кавычками, они полезны по ряду причин. Они позволяют включать неэкранированные одинарные и двойные кавычки внутри строки и могут занимать несколько строк без использования символа продолжения, что делает их особенно полезными при написании докстрингов.
- тип
- Тип объекта Python определяет, что это за объект; каждый
объект имеет тип. Тип объекта доступен как его
атрибут
__class__или может быть получен с помощьюtype(obj). - универсальные символы новой строки
- Способ интерпретации текстовых потоков, при котором все следующие символы
распознаются как конец строки: соглашение Unix о конце строки
'\n', соглашение Windows'\r\n'и старое соглашение Macintosh'\r'. См. PEP 278 и PEP 3116, а такжеbytes.splitlines()для дополнительного применения. - виртуальное окружение
Кооперативно изолированная среда выполнения, которая позволяет пользователям Python и приложениям устанавливать и обновлять пакеты распространения Python, не влияя на поведение других приложений Python, запущенных в той же системе.
См. также pyvenv – создание виртуальных окружений.
- виртуальная машина
- Компьютер, полностью определённый в программном обеспечении. Виртуальная машина Python выполняет байт-код, генерируемый компилятором байт-кода.
- Дзен Python
- Перечень принципов проектирования и философии Python, полезных для
понимания и использования языка. Этот перечень можно найти, введя
“
import this” в интерактивном приглашении.