Глоссарий¶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,whileorfor.- Структурированная последовательность
Кортеж с именованными элементами. Структурные последовательности предоставляют интерфейс, похожий на именованный кортеж, в том смысле, что элементы можно получать либо по индексу, либо как атрибут. Однако у них нет методов именованного кортежа, таких как
_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” в интерактивном приглашении.