Документация Python неофициальный перевод

Глоссарий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), чисел (в модуле numbers) и потоков (в модуле io). Можно создавать собственные 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 о разнице между аргументами и параметрами.

атрибут

Значение, связанное с объектом, на которое ссылаются по имени с помощью выражений с точкой. Например, если объект o имеет атрибут a, на него можно сослаться как o.a.

BDFL

Доброжелательный диктатор на всю жизнь, также известный как Гвидо ван Россум, создатель Python.

байтоподобный объект

Объект, поддерживающий буферный протокол, например str, bytearray или memoryview. Байтоподобные объекты можно использовать для различных операций, ожидающих двоичные данные, таких как сжатие, сохранение в двоичный файл или отправка через сокет. Некоторым операциям требуются изменяемые двоичные данные, и в этом случае подходят не все байтоподобные объекты.

байткод

Исходный код Python компилируется в байт-код – внутреннее представление программы Python в интерпретаторе CPython. Байт-код также кэшируется в файлах .pyc и .pyo, чтобы повторное выполнение одного и того же файла было быстрее (можно избежать повторной компиляции из исходного кода в байт-код). Говорят, что этот «промежуточный язык» выполняется на виртуальной машине, которая выполняет машинный код, соответствующий каждому байт-коду. Обратите внимание, что байт-коды не должны работать между разными виртуальными машинами Python, а также не гарантируют стабильность между версиями Python.

Список инструкций байткода можно найти в документации модуля dis.

класс

Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.

классический класс

Любой класс, который не наследуется от object. См. класс нового стиля. Классические классы были удалены в Python 3.

приведение типов

Неявное преобразование экземпляра одного типа в другой при операции, включающей два аргумента одного типа. Например, int(3.15) преобразует число с плавающей запятой в целое 3, но в 3+4.5 каждый аргумент имеет разный тип (один int, другой float), и оба должны быть преобразованы к одному типу, прежде чем их можно будет сложить, иначе будет возбуждено исключение TypeError. Приведение между двумя операндами можно выполнить с помощью встроенной функции coerce; таким образом, 3+4.5 эквивалентно вызову operator.add(*coerce(3, 4.5)) и даёт operator.add(3.0, 4.5). Без приведения программисту пришлось бы нормализовать все аргументы, даже совместимых типов, к одному значению, например float(3)+4.5 вместо просто 3+4.5.

комплексное число

Расширение привычной системы действительных чисел, в котором все числа выражаются как сумма действительной и мнимой частей. Мнимые числа – это действительные кратные мнимой единицы (квадратный корень из -1), часто обозначаемой i в математике или j в инженерии. Python имеет встроенную поддержку комплексных чисел, которые записываются в этой последней нотации; мнимая часть записывается с суффиксом j, например, 3+1j. Чтобы получить доступ к комплексным аналогам модуля math, используйте cmath. Использование комплексных чисел – довольно продвинутая математическая возможность. Если нет очевидной необходимости в них, их почти наверняка можно безопасно игнорировать.

контекстный менеджер

Объект, управляющий окружением в операторе with путём определения методов __enter__() и __exit__(). См. PEP 343.

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.viewkeys(), dict.viewvalues() и dict.viewitems(), называются представлениями словаря. Они предоставляют динамическое представление записей словаря, то есть при изменении словаря представление отражает эти изменения. Чтобы принудительно превратить представление словаря в полноценный список, используйте list(dictview). См. Объекты представлений словаря.

докстринг

Строковый литерал, который появляется как первое выражение в классе, функции или модуле. Хотя он игнорируется при выполнении кода внутри блока, компилятор распознаёт его и помещает в атрибут __doc__ содержащего класса, функции или модуля. Поскольку к нему можно получить доступ через интроспекцию, это каноническое место для документации объекта.

утиная типизация

Стиль программирования, который не проверяет тип объекта для определения, обладает ли он нужным интерфейсом; вместо этого метод или атрибут просто вызывается или используется («Если это выглядит как утка и крякает как утка, значит, это утка»). Делая упор на интерфейсы, а не на конкретные типы, хорошо спроектированный код повышает гибкость за счёт полиморфной замены. Утиная типизация избегает проверок с помощью type() или isinstance(). (Однако утиную типизацию можно дополнить абстрактными базовыми классами.) Вместо этого она обычно использует проверки hasattr() или программирование в стиле EAFP.

EAFP

Легче попросить прощения, чем разрешения. Этот распространённый стиль программирования на Python предполагает наличие допустимых ключей или атрибутов и перехватывает исключения, если предположение оказывается неверным. Этот чистый и быстрый стиль характеризуется наличием множества операторов try и except. Этот подход противопоставляется стилю LBYL, распространённому во многих других языках, таких как C.

выражение

Фрагмент синтаксиса, который может быть вычислен в некоторое значение. Другими словами, выражение – это совокупность элементов выражений, таких как литералы, имена, доступ к атрибутам, операторы или вызовы функций, которые возвращают значение. В отличие от многих других языков, не все языковые конструкции являются выражениями. Существуют также инструкции, которые нельзя использовать как выражения, например print или if. Присваивания также являются инструкциями, а не выражениями.

модуль-расширение

Модуль, написанный на C или C++, использующий C API Python для взаимодействия с ядром и пользовательским кодом.

файловый объект

Объект, предоставляющий файловый API (с методами, такими как read() или write()) для нижележащего ресурса. В зависимости от способа создания, файловый объект может обеспечивать доступ к реальному файлу на диске или к другому типу хранилища или устройства связи (например, стандартный ввод/вывод, буферы в памяти, сокеты, каналы и т.д.). Файловые объекты также называются объектами, подобными файлам или потоками данных.

На самом деле существует три категории файловых объектов: необработанные двоичные файлы, буферизованные двоичные файлы и текстовые файлы. Их интерфейсы определены в модуле io. Канонический способ создания файлового объекта – использование функции open().

файлоподобный объект

Синоним для файлового объекта.

искатель

Объект, который пытается найти загрузчик для модуля. Он должен реализовывать метод с именем find_module(). Подробнее см. PEP 302.

целочисленное деление

Математическое деление, округляющее результат до ближайшего целого вниз. Оператор деления с округлением вниз – //. Например, выражение 11 // 4 вычисляется в 2 в отличие от 2.75, возвращаемого при истинном делении с плавающей запятой. Обратите внимание, что (-11) // 4 равно -3, потому что это -2.75, округлённое вниз. См. PEP 238.

функция

Последовательность инструкций, которая возвращает некоторое значение вызывающему коду. В неё также можно передать ноль или более аргументов, которые могут использоваться при выполнении тела. См. также параметр, метод, и раздел Определения функций.

future

Псевдомодуль, который программисты могут использовать для включения новых возможностей языка, несовместимых с текущим интерпретатором. Например, выражение 11/4 в настоящее время вычисляется в 2. Если бы в модуле, в котором оно выполняется, было включено истинное деление с помощью выполнения:

from __future__ import division

выражение 11/4 будет вычисляться в 2.75. Импортировав модуль __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
GIL

См. глобальная блокировка интерпретатора.

глобальная блокировка интерпретатора

Механизм, используемый интерпретатором CPython для обеспечения того, чтобы только один поток выполнял байт-код Python в каждый момент времени. Это упрощает реализацию CPython, делая объектную модель (включая критические встроенные типы, такие как dict) неявно безопасной при конкурентном доступе. Блокировка всего интерпретатора упрощает многопоточность интерпретатора, но ценой потери большей части параллелизма, обеспечиваемого многопроцессорными машинами.

Однако некоторые расширяющие модули, как стандартные, так и сторонние, спроектированы так, чтобы освобождать GIL при выполнении вычислительно интенсивных задач, таких как сжатие или хеширование. Кроме того, GIL всегда освобождается при выполнении операций ввода-вывода.

Прежние попытки создать «свободно-поточный» интерпретатор (тот, который блокирует общие данные с гораздо более мелкой гранулярностью) не увенчались успехом, потому что производительность страдала в типичном случае с одним процессором. Считается, что преодоление этой проблемы производительности сделало бы реализацию гораздо более сложной и, следовательно, более дорогой в сопровождении.

хешируемый

Объект является хешируемым, если он имеет хеш-значение, которое никогда не меняется в течение его жизни (ему нужен метод __hash__()), и может сравниваться с другими объектами (ему нужен метод __eq__() или __cmp__()). Хешируемые объекты, которые равны при сравнении, должны иметь одинаковое хеш-значение.

Хешируемость позволяет использовать объект в качестве ключа словаря и элемента множества, поскольку эти структуры данных внутренне используют хеш-значение.

Все неизменяемые встроенные объекты Python являются хешируемыми, а изменяемые контейнеры (такие как списки или словари) – нет. Объекты, являющиеся экземплярами пользовательских классов, по умолчанию хешируемы; все они неравны при сравнении (кроме сравнения с самим собой), и их хеш-значение получается из их id().

IDLE

Интегрированная среда разработки для Python. IDLE – это базовый редактор и среда интерпретатора, которая поставляется со стандартной дистрибуцией Python.

неизменяемый

Объект с фиксированным значением. К неизменяемым объектам относятся числа, строки и кортежи. Такой объект нельзя изменить. Если требуется сохранить другое значение, необходимо создать новый объект. Они играют важную роль там, где требуется постоянное хеш-значение, например в качестве ключа в словаре.

целочисленное деление

Математическое деление с отбрасыванием остатка. Например, выражение 11/4 в настоящее время вычисляется в 2 в отличие от 2.75, возвращаемого делением с плавающей запятой. Также называется делением с округлением вниз. При делении двух целых чисел результатом всегда будет другое целое число (с применением функции округления вниз). Однако если один из операндов имеет другой числовой тип (например, float), результат будет приведён (см. приведение) к общему типу. Например, целое, делённое на число с плавающей запятой, даст значение с плавающей запятой, возможно, с десятичной дробью. Целочисленное деление можно выполнить принудительно, используя оператор // вместо оператора /. См. также __future__.

импортирование

Процесс, благодаря которому код Python в одном модуле становится доступным коду Python в другом модуле.

импортёр

Объект, который одновременно находит и загружает модуль; объект, являющийся как искателем, так и загрузчиком.

интерактивный

Python имеет интерактивный интерпретатор, что позволяет вводить инструкции и выражения в приглашении интерпретатора, немедленно выполнять их и видеть результаты. Для этого достаточно запустить python без аргументов (возможно, выбрав его из главного меню компьютера). Это очень мощный способ проверки новых идей или изучения модулей и пакетов (помните help(x)).

интерпретируемый

Python является интерпретируемым языком, в отличие от компилируемых, хотя различие может быть размытым из-за наличия компилятора байткода. Это означает, что исходные файлы можно запускать напрямую, без явного создания исполняемого файла, который затем выполняется. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя их программы, как правило, выполняются медленнее. См. также интерактивный.

итерируемый объект

Объект, способный возвращать свои элементы по одному. Примеры итерируемых объектов включают все типы последовательностей (такие как list, str и tuple) и некоторые не последовательностные типы, например dict и file, а также объекты любых классов, для которых определён метод __iter__() или __getitem__(). Итерируемые объекты можно использовать в цикле for и во многих других местах, где требуется последовательность (zip(), map(), …). Когда итерируемый объект передаётся в качестве аргумента встроенной функции iter(), она возвращает итератор для этого объекта. Этот итератор годен для одного прохода по набору значений. При работе с итерируемыми объектами обычно не нужно вызывать iter() или самостоятельно иметь дело с объектами-итераторами. Инструкция for делает это автоматически, создавая временную безымянную переменную для хранения итератора на время цикла. См. также итератор, последовательность и генератор.

итератор

Объект, представляющий поток данных. Повторные вызовы метода next() итератора возвращают последовательные элементы потока. Когда данные заканчиваются, вместо этого возбуждается исключение StopIteration. В этот момент объект-итератор исчерпан, и любые последующие вызовы его метода next() снова возбуждают StopIteration. Итераторы должны иметь метод __iter__(), который возвращает сам объект итератора, поэтому каждый итератор также является итерируемым и может использоваться в большинстве мест, где принимаются другие итерируемые объекты. Одним заметным исключением является код, который пытается выполнить многократные проходы по итерации. Контейнерный объект (например, list) создаёт новый свежий итератор каждый раз, когда вы передаёте его функции iter() или используете в цикле for. Попытка сделать то же самое с итератором просто вернёт тот же исчерпанный объект итератора, использованный в предыдущем проходе, из-за чего он будет выглядеть как пустой контейнер.

Дополнительную информацию можно найти в Iterator Types.

функция ключа

Функция-ключ или функция сортировки – это вызываемый объект, возвращающий значение, используемое для сортировки или упорядочивания. Например, locale.strxfrm() используется для создания ключа сортировки, учитывающего локальные соглашения сортировки.

Ряд инструментов в Python принимают ключевые функции для управления порядком или группировкой элементов. К ним относятся min(), max(), sorted(), list.sort(), heapq.nsmallest(), heapq.nlargest() и itertools.groupby().

Существует несколько способов создания ключевой функции. Например, метод str.lower() может служить ключевой функцией для сортировки без учёта регистра. В качестве альтернативы можно построить специальную ключевую функцию из выражения lambda, такого как lambda r: (r[0], r[2]). Кроме того, модуль operator предоставляет три конструктора ключевых функций: attrgetter(), itemgetter() и methodcaller(). Примеры создания и использования ключевых функций см. в Sorting HOW TO.

именованный аргумент

См. аргумент.

лямбда

Анонимная встроенная функция, состоящая из одного выражения, которое вычисляется при вызове функции. Синтаксис создания лямбда-функции: lambda [parameters]: expression

LBYL

Сначала проверь, потом делай (Look before you leap). Этот стиль кодирования явно проверяет предусловия перед вызовами или обращениями. Этот стиль противоположен подходу EAFP и характеризуется наличием множества инструкций if.

В многопоточной среде подход LBYL может привести к состоянию гонки между «проверкой» и «действием». Например, код if key in mapping: return mapping[key] может завершиться ошибкой, если другой поток удалит ключ из отображения после проверки, но до обращения. Эту проблему можно решить с помощью блокировок или используя подход EAFP.

список

Встроенная в Python последовательность. Несмотря на название, она больше похожа на массив из других языков, чем на связный список, поскольку доступ к элементам осуществляется за O(1).

генератор списка

Компактный способ обработки всех или части элементов последовательности и возврата списка с результатами. result = ["0x%02x" % x for x in range(256) if x % 2 == 0] генерирует список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Предложение if является необязательным. Если оно опущено, обрабатываются все элементы в range(256).

загрузчик

Объект, который загружает модуль. Он должен определять метод с именем load_module(). Загрузчик обычно возвращается искателем. Подробнее см. PEP 302.

магический метод

Неформальный синоним специального метода.

отображение

Контейнер, поддерживающий произвольный поиск по ключу и реализующий методы, указанные в Mapping или MutableMapping абстрактных базовых классов. Примеры включают dict, collections.defaultdict, collections.OrderedDict и collections.Counter.

метакласс

Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за приём этих трёх аргументов и создание класса. Большинство объектно-ориентированных языков программирования предоставляют реализацию по умолчанию. Особенность Python в том, что можно создавать пользовательские метаклассы. Большинству пользователей этот инструмент никогда не понадобится, но когда возникает необходимость, метаклассы могут предоставить мощные и элегантные решения. Они использовались для логирования доступа к атрибутам, добавления потокобезопасности, отслеживания создания объектов, реализации синглтонов и многих других задач.

Дополнительную информацию можно найти в Настройка создания классов.

метод

Функция, определённая внутри тела класса. При вызове как атрибут экземпляра этого класса метод получает объект экземпляра в качестве первого аргумента (обычно называемого self). См. функцию и вложенную область видимости.

порядок разрешения методов

Порядок разрешения методов – это порядок, в котором базовые классы просматриваются для поиска атрибута. См. Порядок разрешения методов Python 2.3 для подробностей алгоритма, используемого интерпретатором Python начиная с версии 2.3.

модуль

Объект, служащий организационной единицей кода Python. Модули имеют пространство имён, содержащее произвольные объекты Python. Модули загружаются в Python в процессе импортирования.

См. также пакет.

MRO

См. порядок разрешения методов.

изменяемый

Изменяемые объекты могут менять своё значение, но сохраняют свой id(). См. также неизменяемый.

именованный кортеж

Любой класс, похожий на кортеж, чьи индексируемые элементы также доступны через именованные атрибуты (например, time.localtime() возвращает объект, похожий на кортеж, где year доступен либо по индексу, например t[0], либо через именованный атрибут, например t.tm_year).

Именованный кортеж может быть встроенным типом, таким как time.struct_time, или может быть создан с помощью обычного определения класса. Полнофункциональный именованный кортеж также может быть создан с помощью фабричной функции collections.namedtuple(). Последний подход автоматически предоставляет дополнительные возможности, такие как самодокументируемое представление, например Employee(name='jones', title='programmer').

пространство имён

Место хранения переменной. Пространства имён реализованы как словари. Существуют локальное, глобальное и встроенное пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён способствуют модульности, предотвращая конфликты имён. Например, функции __builtin__.open() и os.open() различаются своими пространствами имён. Пространства имён также улучшают читаемость и сопровождаемость, позволяя понять, какой модуль реализует функцию. Например, запись random.seed() или itertools.izip() показывает, что эти функции реализованы модулями random и itertools соответственно.

вложенная область видимости

Возможность ссылаться на переменную во внешнем определении. Например, функция, определённая внутри другой функции, может ссылаться на переменные внешней функции. Обратите внимание: вложенные области видимости работают только для чтения, а не для присваивания, которое всегда записывает в самую внутреннюю область. В отличие от этого, локальные переменные и читаются, и записываются в самой внутренней области. Аналогично, глобальные переменные читаются и записываются в глобальном пространстве имён.

класс нового стиля

Любой класс, наследующий от object. Сюда входят все встроенные типы, такие как list и dict. Только классы нового стиля могут использовать новые, многофункциональные возможности Python, такие как __slots__, дескрипторы, свойства и __getattribute__().

Дополнительную информацию можно найти в Классы нового и классического стиля.

объект

Любые данные с состоянием (атрибуты или значение) и определённым поведением (методы). Также конечный базовый класс любого класса нового стиля.

пакет

Модуль Python модуль, который может содержать подмодули или, рекурсивно, подпакеты. Технически пакет – это модуль Python с атрибутом __path__.

параметр

Именованная сущность в определении функции (или метода), которая указывает аргумент (или в некоторых случаях аргументы), которые функция может принимать. Существует четыре типа параметров:

  • позиционный или ключевой: указывает аргумент, который может быть передан либо позиционно, либо в качестве ключевого аргумента. Это вид параметра по умолчанию, например foo и bar в следующем примере:

    def func(foo, bar=None): ...
    
  • позиционно-только: указывает аргумент, который может быть передан только по позиции. В Python нет синтаксиса для определения позиционно-только параметров. Однако некоторые встроенные функции имеют позиционно-только параметры (например, abs()).

  • вариативно-позиционный: указывает, что может быть предоставлена произвольная последовательность позиционных аргументов (в дополнение к любым позиционным аргументам, уже принимаемым другими параметрами). Такой параметр можно определить, добавив * перед именем параметра, например args в следующем примере:

    def func(*args, **kwargs): ...
    
  • вариативно-ключевой: указывает, что может быть предоставлено произвольно много именованных аргументов (в дополнение к любым именованным аргументам, уже принимаемым другими параметрами). Такой параметр можно определить, добавив ** перед именем параметра, например kwargs в примере выше.

Параметры могут определять как необязательные, так и обязательные аргументы, а также значения по умолчанию для некоторых необязательных аргументов.

См. также глоссарий аргумент, вопрос из FAQ о разнице между аргументами и параметрами, а также раздел Определения функций.

PEP

Python Enhancement Proposal. PEP – это проектный документ, предоставляющий информацию сообществу Python или описывающий новую возможность для Python, его процессов или окружения. PEP должны содержать краткую техническую спецификацию и обоснование предлагаемых возможностей.

PEP предназначены быть основным механизмом для предложения крупных новых возможностей, сбора мнений сообщества по какому-либо вопросу и документирования проектных решений, принятых в Python. Автор PEP отвечает за достижение консенсуса в сообществе и документирование особых мнений.

См. PEP 1.

позиционный аргумент

См. аргумент.

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
счётчик ссылок

Количество ссылок на объект. Когда счётчик ссылок объекта падает до нуля, объект освобождается. Подсчёт ссылок обычно невидим для кода Python, но является ключевым элементом реализации CPython. Модуль sys определяет функцию getrefcount(), которую программисты могут вызывать для получения счётчика ссылок для конкретного объекта.

slots

Объявление внутри класса нового стиля, которое экономит память за счёт предварительного резервирования места для атрибутов экземпляра и устранения словарей экземпляров. Хотя эта техника популярна, её правильное применение несколько затруднительно, и её лучше приберечь для редких случаев, когда имеется большое количество экземпляров в приложении, критичном к памяти.

последовательность

Итерируемый объект, который поддерживает эффективный доступ к элементам по целочисленным индексам через специальный метод __getitem__() и определяет метод len(), возвращающий длину последовательности. Некоторые встроенные типы последовательностей: list, str, tuple и unicode. Обратите внимание, что dict также поддерживает __getitem__() и __len__(), но считается отображением, а не последовательностью, так как поиск использует произвольные неизменяемые ключи, а не целые числа.

срез

Объект, обычно содержащий часть последовательности. Срез создаётся с помощью индексации, [] с двоеточиями между числами, когда их несколько, например в variable_name[1:3:5]. Внутри индексация использует объекты slice (или в старых версиях __getslice__() и __setslice__()).

специальный метод

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, while or for.

Структурированная последовательность

Кортеж с именованными элементами. Структурные последовательности предоставляют интерфейс, похожий на именованный кортеж, в том смысле, что элементы можно получать либо по индексу, либо как атрибут. Однако у них нет методов именованного кортежа, таких как _make() или _asdict(). Примеры структурных последовательностей включают sys.float_info и возвращаемое значение os.stat().

строка в тройных кавычках

Строка, ограниченная тремя экземплярами либо кавычек («), либо апострофов ('). Хотя они не предоставляют никаких возможностей, недоступных для строк в одинарных кавычках, они полезны по ряду причин. Они позволяют включать в строку неэкранированные одинарные и двойные кавычки и могут занимать несколько строк без использования символа продолжения, что делает их особенно полезными при написании докстрингов.

тип

Тип объекта Python определяет, что это за объект; каждый объект имеет тип. Тип объекта доступен как его атрибут __class__ или может быть получен с помощью type(obj).

универсальные символы новой строки

Способ интерпретации текстовых потоков, при котором все следующие символы распознаются как конец строки: соглашение Unix о конце строки '\n', соглашение Windows '\r\n' и старое соглашение Macintosh '\r'. См. PEP 278 и PEP 3116, а также str.splitlines() для дополнительного применения.

виртуальное окружение

Кооперативно изолированная среда выполнения, которая позволяет пользователям Python и приложениям устанавливать и обновлять пакеты распространения Python, не влияя на поведение других приложений Python, запущенных в той же системе.

виртуальная машина

Компьютер, полностью определённый в программном обеспечении. Виртуальная машина Python выполняет байт-код, генерируемый компилятором байт-кода.

Дзен Python

Перечень принципов проектирования и философии Python, полезных для понимания и использования языка. Этот перечень можно найти, введя “import this” в интерактивном приглашении.