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

glossary.md

969 строк · 56.4 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/glossary.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Глоссарий89**`>>>`**1011Приглашение по умолчанию в интерактивной оболочке Python. Часто встречается в примерах кода, которые можно выполнять в интерпретаторе в интерактивном режиме.1213**`...`**1415Стандартное приглашение Python интерактивной оболочки при вводе кода для блока с отступом или внутри пары соответствующих открывающих и закрывающих разделителей (круглых скобок, квадратных скобок или фигурных скобок).1617**2to3**1819Инструмент, преобразующий код Python 2.x в код Python 3.x путём обработки большинства несовместимостей, которые можно обнаружить при разборе исходного кода и обходе дерева разбора.20212to3 доступен в стандартной библиотеке как [`lib2to3`](https://python-all.ru/3.1/library/2to3.html#module-lib2to3); отдельная точка входа предоставляется как `Tools/scripts/2to3`. См. [*2to3 – автоматическое преобразование кода Python 2 в 3*](https://python-all.ru/3.1/library/2to3.html#to3-reference).2223**абстрактный базовый класс**2425Абстрактные базовые классы (сокращённо ABC) дополняют2627[*утиную типизацию*](https://python-all.ru/3.1/glossary.html#term-duck-typing)2829, предоставляя способ определения интерфейсов, когда другие техники, такие как3031[`hasattr()`](https://python-all.ru/3.1/library/functions.html#hasattr)3233, были бы неудобны. Python поставляется со многими встроенными ABC для структур данных (в модуле3435[`collections`](https://python-all.ru/3.1/library/collections.html#module-collections)3637), чисел (в модуле3839[`numbers`](https://python-all.ru/3.1/library/numbers.html#module-numbers)4041) и потоков (в модуле4243[`io`](https://python-all.ru/3.1/library/io.html#module-io)4445). Собственный ABC можно создать с помощью модуля4647[`abc`](https://python-all.ru/3.1/library/abc.html#module-abc)4849.5051**аргумент**5253Значение, передаваемое функции или методу, присваиваемое именованной локальной переменной в теле функции. Функция или метод могут иметь как позиционные аргументы, так и именованные аргументы в своём определении. Позиционные и именованные аргументы могут быть переменной длины: `*` принимает или передаёт (в определении или вызове функции) несколько позиционных аргументов в виде списка, а `**` делает то же самое для именованных аргументов в виде словаря.5455Любое выражение может быть использовано в списке аргументов, и вычисленное значение передаётся локальной переменной.5657**атрибут**5859Значение, связанное с объектом, на которое ссылаются по имени с помощью выражений с точкой. Например, если объект6061*o*6263имеет атрибут6465*a*6667, на него можно сослаться как6869*o.a*7071.7273**BDFL**7475Доброжелательный диктатор на всю жизнь, также известный как7677[Гвидо ван Россум](https://python-all.ru/3.1/glossary.html)7879, создатель Python.8081**байткод**8283Исходный код Python компилируется в байткод – внутреннее представление программы Python в интерпретаторе. Байткод также кэшируется в файлах `.pyc` и `.pyo`, чтобы при повторном выполнении того же файла это было быстрее (можно избежать перекомпиляции из исходного кода в байткод). Этот «промежуточный язык» выполняется на [*виртуальной машине*](https://python-all.ru/3.1/glossary.html#term-virtual-machine), которая исполняет машинный код, соответствующий каждому байткоду.8485Список инструкций байткода можно найти в документации [*модуля dis*](https://python-all.ru/3.1/library/dis.html#bytecodes).8687**класс**8889Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.9091**приведение типов**9293Неявное преобразование экземпляра одного типа в другой во время операции, включающей два аргумента одного типа. Например,9495`int(3.15)`9697преобразует число с плавающей запятой в целое число9899`3`100101, но в102103`3+4.5`104105каждый аргумент имеет разный тип (один int, другой float), и оба должны быть преобразованы в один и тот же тип, прежде чем их можно будет сложить, иначе будет возбуждено106107`TypeError`108109. Без приведения типов программисту пришлось бы нормализовать все аргументы, даже совместимых типов, до одного значения, например110111`float(3)+4.5`112113, а не просто114115`3+4.5`116117.118119**комплексное число**120121Расширение привычной системы действительных чисел, в котором все числа выражаются как сумма действительной и мнимой части. Мнимые числа – это действительные кратные мнимой единицы (квадратный корень из122123`-1`124125), часто записываемой как126127`i`128129в математике или130131`j`132133в технике. Python имеет встроенную поддержку комплексных чисел, которые записываются в последнем обозначении; мнимая часть записывается с суффиксом134135`j`136137, например,138139`3+1j`140141. Для доступа к комплексным аналогам модуля142143[`math`](https://python-all.ru/3.1/library/math.html#module-math)144145используйте146147[`cmath`](https://python-all.ru/3.1/library/cmath.html#module-cmath)148149. Использование комплексных чисел – довольно продвинутая математическая возможность. Если вы не осознаёте необходимости в них, почти наверняка их можно безопасно игнорировать.150151**контекстный менеджер**152153Объект, который управляет окружением, видимым в операторе154155[`with`](https://python-all.ru/3.1/reference/compound_stmts.html#with)156157, определяя методы158159[`__enter__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__enter__)160161и162163[`__exit__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__exit__)164165. См.166167[**PEP 343**](https://python-all.ru/3.1/glossary.html)168169.170171**CPython**172173Каноническая реализация языка программирования Python, распространяемая на174175[python.org](https://python-all.ru/3.1/glossary.html)176177. Термин «CPython» используется, когда необходимо отличить эту реализацию от других, таких как Jython или IronPython.178179**декоратор**180181Функция, возвращающая другую функцию, обычно применяемая как преобразование функции с использованием синтаксиса `@wrapper`. Распространённые примеры декораторов: [`classmethod()`](https://python-all.ru/3.1/library/functions.html#classmethod) и [`staticmethod()`](https://python-all.ru/3.1/library/functions.html#staticmethod).182183Синтаксис декоратора – всего лишь синтаксический сахар, следующие два определения функций семантически эквивалентны:184185```python186def f(...):187    ...188f = staticmethod(f)189190@staticmethod191def f(...):192    ...193```194195Та же концепция существует и для классов, но там используется реже. См. документацию по [*определениям функций*](https://python-all.ru/3.1/reference/compound_stmts.html#function) и [*определениям классов*](https://python-all.ru/3.1/reference/compound_stmts.html#class) для получения дополнительной информации о декораторах.196197**дескриптор**198199Любой объект, который определяет методы [`__get__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__get__), [`__set__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__set__) или [`__delete__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__delete__). Когда атрибут класса является дескриптором, его специальное поведение связывания срабатывает при поиске атрибута. Обычно использование *a.b* для получения, установки или удаления атрибута ищет объект с именем *b* в словаре класса для *a*, но если *b* является дескриптором, вызывается соответствующий метод дескриптора. Понимание дескрипторов – ключ к глубокому пониманию Python, потому что они являются основой многих возможностей, включая функции, методы, свойства, методы класса, статические методы и ссылки на суперклассы.200201Подробнее о методах дескрипторов см. в [*Implementing Descriptors*](https://python-all.ru/3.1/reference/datamodel.html#descriptors).202203**словарь**204205Ассоциативный массив, где произвольные ключи сопоставляются значениям. Ключи могут быть любыми объектами с функцией206207[`__hash__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__hash__)208209и методами210211[`__eq__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__eq__)212213. В Perl называется хешем.214215**докстринг**216217Строковый литерал, который появляется как первое выражение в классе, функции или модуле. Хотя он игнорируется при выполнении блока, он распознаётся компилятором и помещается в атрибут218219`__doc__`220221окружающего класса, функции или модуля. Поскольку он доступен через интроспекцию, это каноническое место для документации объекта.222223**утиная типизация**224225Стиль программирования, который не смотрит на тип объекта, чтобы определить, есть ли у него правильный интерфейс; вместо этого метод или атрибут просто вызывается или используется («Если это выглядит как утка и крякает как утка, значит, это утка»). Делая упор на интерфейсы, а не на конкретные типы, хорошо спроектированный код повышает гибкость, допуская полиморфную подстановку. Утиная типизация позволяет избежать проверок с помощью226227[`type()`](https://python-all.ru/3.1/library/functions.html#type)228229или230231[`isinstance()`](https://python-all.ru/3.1/library/functions.html#isinstance)232233. (Однако обратите внимание, что утиная типизация может дополняться234235[*абстрактными базовыми классами*](https://python-all.ru/3.1/glossary.html#term-abstract-base-class)236237.) Вместо этого обычно используются проверки238239[`hasattr()`](https://python-all.ru/3.1/library/functions.html#hasattr)240241или программирование в стиле242243[*EAFP*](https://python-all.ru/3.1/glossary.html#term-eafp)244245.246247**EAFP**248249Проще попросить прощения, чем разрешения. Этот распространённый стиль программирования на Python предполагает существование правильных ключей или атрибутов и перехватывает исключения, если предположение оказывается неверным. Этот чистый и быстрый стиль характеризуется наличием множества операторов250251[`try`](https://python-all.ru/3.1/reference/compound_stmts.html#try)252253и254255[`except`](https://python-all.ru/3.1/reference/compound_stmts.html#except)256257. Этот подход контрастирует со стилем258259[*LBYL*](https://python-all.ru/3.1/glossary.html#term-lbyl)260261, распространённым во многих других языках, таких как C.262263**выражение**264265Синтаксическая конструкция, которая может быть вычислена в некоторое значение. Другими словами, выражение – это совокупность элементов выражения, таких как литералы, имена, доступ к атрибутам, операторы или вызовы функций, которые возвращают значение. В отличие от многих других языков, не все языковые конструкции являются выражениями. Существуют также266267[*инструкции*](https://python-all.ru/3.1/glossary.html#term-statement)268269, которые нельзя использовать как выражения, например270271[`if`](https://python-all.ru/3.1/reference/compound_stmts.html#if)272273. Присваивания также являются инструкциями, а не выражениями.274275**модуль-расширение**276277Модуль, написанный на C или C++, использующий C API Python для взаимодействия с ядром и пользовательским кодом.278279**файловый объект**280281Объект, предоставляющий файловый API (с методами, такими как `read()` или `write()`) для некоторого базового ресурса. В зависимости от способа создания файловый объект может обеспечивать доступ к реальному файлу на диске или к другому типу хранилища или устройства связи (например, стандартный ввод/вывод, буферы в памяти, сокеты, каналы и т.д.). Файловые объекты также называются *файлоподобными объектами* или *потоками данных*.282283На самом деле существует три категории файловых объектов: необработанные двоичные файлы, буферизованные двоичные файлы и текстовые файлы. Их интерфейсы определены в модуле [`io`](https://python-all.ru/3.1/library/io.html#module-io). Канонический способ создания файлового объекта – использование функции [`open()`](https://python-all.ru/3.1/library/functions.html#open).284285**файлоподобный объект**286287Синоним для288289[*файлового объекта*](https://python-all.ru/3.1/glossary.html#term-file-object)290291.292293**искатель**294295Объект, который пытается найти296297[*загрузчик*](https://python-all.ru/3.1/glossary.html#term-loader)298299для модуля. Он должен реализовывать метод с именем300301`find_module()`302303. См.304305[**PEP 302**](https://python-all.ru/3.1/glossary.html)306307для подробностей и308309[`importlib.abc.Finder`](https://python-all.ru/3.1/library/importlib.html#importlib.abc.Finder)310311для312313[*абстрактного базового класса*](https://python-all.ru/3.1/glossary.html#term-abstract-base-class)314315.316317**целочисленное деление**318319Математическое деление, округляющее результат до ближайшего целого вниз. Оператор деления с округлением вниз –320321`//`322323. Например, выражение324325`11 // 4`326327вычисляется в328329`2`330331в отличие от332333`2.75`334335, возвращаемого при истинном делении с плавающей запятой. Обратите внимание, что336337`(-11) // 4`338339равно340341`-3`342343, потому что это344345`-2.75`346347, округлённое348349*вниз*350351. См.352353[**PEP 238**](https://python-all.ru/3.1/glossary.html)354355.356357**функция**358359Последовательность инструкций, возвращающая значение вызывающему коду. Ей также может быть передано ноль или более аргументов, которые могут использоваться при выполнении тела. См. также360361[*аргумент*](https://python-all.ru/3.1/glossary.html#term-argument)362363и364365[*метод*](https://python-all.ru/3.1/glossary.html#term-method)366367.368369**future**370371Псевдомодуль, с помощью которого программисты могут включать новые возможности языка, несовместимые с текущим интерпретатором.372373Импортировав модуль [`__future__`](https://python-all.ru/3.1/library/__future__.html#module-__future__) и вычислив его переменные, можно увидеть, когда новая возможность была впервые добавлена в язык и когда она стала поведением по умолчанию:374375```python376>>> import __future__377>>> __future__.division378_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)379```380381**сборка мусора**382383Процесс освобождения памяти, когда она больше не используется. Python выполняет сборку мусора с помощью подсчёта ссылок и циклического сборщика мусора, который способен обнаруживать и разрывать циклические ссылки.384385**генератор**386387Функция, которая возвращает итератор. Она выглядит как обычная функция, за исключением того, что содержит операторы388389[`yield`](https://python-all.ru/3.1/reference/simple_stmts.html#yield)390391для порождения последовательности значений, которые можно использовать в цикле for или получать по одному с помощью функции392393[`next()`](https://python-all.ru/3.1/library/functions.html#next)394395. Каждый396397[`yield`](https://python-all.ru/3.1/reference/simple_stmts.html#yield)398399временно приостанавливает выполнение, запоминая состояние выполнения (включая локальные переменные и ожидающие операторы try). Когда генератор возобновляется, он продолжает с того места, где остановился (в отличие от функций, которые начинают заново при каждом вызове).400401**генераторное выражение**402403Выражение, возвращающее генератор. Оно выглядит как обычное выражение, за которым следует выражение [`for`](https://python-all.ru/3.1/reference/compound_stmts.html#for), определяющее переменную цикла, диапазон и необязательное выражение [`if`](https://python-all.ru/3.1/reference/compound_stmts.html#if). Совместное выражение генерирует значения для внешней функции:404405```python406>>> sum(i*i for i in range(10))         # сумма квадратов 0, 1, 4, ... 81407285408```409410**GIL**411412См.413414[*глобальная блокировка интерпретатора*](https://python-all.ru/3.1/glossary.html#term-global-interpreter-lock)415416.417418**глобальная блокировка интерпретатора**419420Механизм, используемый интерпретатором [*CPython*](https://python-all.ru/3.1/glossary.html#term-cpython), чтобы гарантировать, что только один поток выполняет [*байткод Python*](https://python-all.ru/3.1/glossary.html#term-bytecode) в один момент времени. Это упрощает реализацию CPython, делая объектную модель (включая критически важные встроенные типы, такие как [`dict`](https://python-all.ru/3.1/library/stdtypes.html#dict)) неявно безопасной для конкурентного доступа. Блокировка всего интерпретатора облегчает его многопоточность, но ценой потери большей части параллелизма, который могли бы дать многопроцессорные машины.421422Однако некоторые расширяющие модули, как стандартные, так и сторонние, спроектированы так, чтобы освобождать GIL при выполнении вычислительно интенсивных задач, таких как сжатие или хеширование. Кроме того, GIL всегда освобождается при выполнении операций ввода-вывода.423424Прежние попытки создать «свободно-поточный» интерпретатор (тот, который блокирует общие данные с гораздо более мелкой гранулярностью) не увенчались успехом, потому что производительность страдала в типичном случае с одним процессором. Считается, что преодоление этой проблемы производительности сделало бы реализацию гораздо более сложной и, следовательно, более дорогой в сопровождении.425426**хешируемый**427428Объект является *хэшируемым*, если у него есть хэш-значение, которое никогда не меняется в течение его жизни (нужен метод [`__hash__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__hash__)), и его можно сравнивать с другими объектами (нужен метод [`__eq__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__eq__)). Хэшируемые объекты, которые сравниваются как равные, должны иметь одинаковое хэш-значение.429430Хешируемость позволяет использовать объект в качестве ключа словаря и элемента множества, поскольку эти структуры данных внутренне используют хеш-значение.431432Все неизменяемые встроенные объекты Python являются хешируемыми, в то время как ни один изменяемый контейнер (например, списки или словари) не является хешируемым. Объекты, являющиеся экземплярами пользовательских классов, по умолчанию хешируемы; все они сравниваются как неравные, и их хеш-значение – это их [`id()`](https://python-all.ru/3.1/library/functions.html#id).433434**IDLE**435436Интегрированная среда разработки для Python. IDLE – это базовый редактор и среда интерпретатора, которая поставляется со стандартной дистрибуцией Python.437438**неизменяемый**439440Объект с фиксированным значением. К неизменяемым объектам относятся числа, строки и кортежи. Такой объект нельзя изменить. Если требуется сохранить другое значение, необходимо создать новый объект. Они играют важную роль там, где требуется постоянное хеш-значение, например в качестве ключа в словаре.441442**импортёр**443444Объект, который одновременно находит и загружает модуль; объект, являющийся как445446[*искателем*](https://python-all.ru/3.1/glossary.html#term-finder)447448, так и449450[*загрузчиком*](https://python-all.ru/3.1/glossary.html#term-loader)451452.453454**интерактивный**455456Python включает интерактивный интерпретатор: можно вводить инструкции и выражения в приглашении интерпретатора, сразу же выполнять их и видеть результат. Просто запустите457458`python`459460без аргументов (возможно, выбрав его из главного меню компьютера). Это очень удобный способ опробовать новые идеи или изучить модули и пакеты (вспомните461462`help(x)`463464).465466**интерпретируемый**467468Python является интерпретируемым языком, в отличие от компилируемых, хотя различие может быть размытым из-за наличия компилятора байткода. Это означает, что исходные файлы можно запускать напрямую, без явного создания исполняемого файла, который затем выполняется. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя их программы, как правило, выполняются медленнее. См. также469470[*интерактивный*](https://python-all.ru/3.1/glossary.html#term-interactive)471472.473474**итерируемый объект**475476Контейнерный объект, способный возвращать свои элементы по одному. Примеры итерабельных объектов включают все типы последовательностей (такие как477478[`list`](https://python-all.ru/3.1/library/functions.html#list)479480,481482[`str`](https://python-all.ru/3.1/library/functions.html#str)483484,485486[`tuple`](https://python-all.ru/3.1/library/functions.html#tuple)487488) и некоторые непоследовательные типы, такие как489490[`dict`](https://python-all.ru/3.1/library/stdtypes.html#dict)491492,493494`file`495496и объекты любых классов, определённых с помощью метода497498[`__iter__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__iter__)499500или501502[`__getitem__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getitem__)503504. Итерабельные объекты могут использоваться в цикле505506[`for`](https://python-all.ru/3.1/reference/compound_stmts.html#for)507508и во многих других местах, где требуется последовательность (509510[`zip()`](https://python-all.ru/3.1/library/functions.html#zip)511512,513514[`map()`](https://python-all.ru/3.1/library/functions.html#map)515516, ...). Когда итерабельный объект передаётся в качестве аргумента встроенной функции517518[`iter()`](https://python-all.ru/3.1/library/functions.html#iter)519520, она возвращает итератор для этого объекта. Этот итератор пригоден для одного прохода по набору значений. При использовании итерабельных объектов обычно не требуется вызывать521522[`iter()`](https://python-all.ru/3.1/library/functions.html#iter)523524или работать с объектами-итераторами напрямую. Инструкция525526`for`527528делает это автоматически, создавая временную безымянную переменную для хранения итератора на время цикла. См. также529530[*итератор*](https://python-all.ru/3.1/glossary.html#term-iterator)531532,533534[*последовательность*](https://python-all.ru/3.1/glossary.html#term-sequence)535536и537538[*генератор*](https://python-all.ru/3.1/glossary.html#term-generator)539540.541542**итератор**543544Объект, представляющий поток данных. Повторные вызовы метода `__next__()` итератора (или передача его встроенной функции [`next()`](https://python-all.ru/3.1/library/functions.html#next)) возвращают последовательные элементы потока. Когда данных больше нет, вместо этого возбуждается исключение [`StopIteration`](https://python-all.ru/3.1/library/exceptions.html#StopIteration). После этого объект-итератор исчерпывается, и любые дальнейшие вызовы его метода `__next__()` снова возбуждают [`StopIteration`](https://python-all.ru/3.1/library/exceptions.html#StopIteration). Итераторы должны иметь метод [`__iter__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__iter__), который возвращает сам объект-итератор, поэтому каждый итератор также является итерабельным и может использоваться в большинстве мест, где принимаются другие итерабельные объекты. Одним заметным исключением является код, который пытается выполнить множественные проходы итерации. Контейнерный объект (например, [`list`](https://python-all.ru/3.1/library/functions.html#list)) создаёт новый свежий итератор каждый раз, когда вы передаёте его функции [`iter()`](https://python-all.ru/3.1/library/functions.html#iter) или используете в цикле [`for`](https://python-all.ru/3.1/reference/compound_stmts.html#for). Попытка сделать то же самое с итератором просто вернёт тот же самый исчерпанный объект-итератор, использованный в предыдущем проходе итерации, из-за чего он будет выглядеть как пустой контейнер.545546Дополнительную информацию можно найти в [*Iterator Types*](https://python-all.ru/3.1/library/stdtypes.html#typeiter).547548**функция ключа**549550Ключевая функция (или функция сравнения) – это вызываемый объект, возвращающий значение, используемое для сортировки или упорядочивания. Например, [`locale.strxfrm()`](https://python-all.ru/3.1/library/locale.html#locale.strxfrm) используется для получения ключа сортировки, учитывающего правила сортировки, зависящие от локали.551552Ряд инструментов в Python принимают функции-ключи для управления порядком или группировкой элементов. К ним относятся [`min()`](https://python-all.ru/3.1/library/functions.html#min), [`max()`](https://python-all.ru/3.1/library/functions.html#max), [`sorted()`](https://python-all.ru/3.1/library/functions.html#sorted), `list.sort()`, [`heapq.nsmallest()`](https://python-all.ru/3.1/library/heapq.html#heapq.nsmallest), [`heapq.nlargest()`](https://python-all.ru/3.1/library/heapq.html#heapq.nlargest) и [`itertools.groupby()`](https://python-all.ru/3.1/library/itertools.html#itertools.groupby).553554There are several ways to create a key function. For example. the [`str.lower()`](https://python-all.ru/3.1/library/stdtypes.html#str.lower) method can serve as a key function for case insensitive sorts. Alternatively, an ad-hoc key function can be built from a [`lambda`](https://python-all.ru/3.1/reference/expressions.html#lambda) expression such as `lambda r: (r[0], r[2])`. Also, the [`operator`](https://python-all.ru/3.1/library/operator.html#module-operator) module provides three key function constuctors: [`attrgetter()`](https://python-all.ru/3.1/library/operator.html#operator.attrgetter), [`itemgetter()`](https://python-all.ru/3.1/library/operator.html#operator.itemgetter), and [`methodcaller()`](https://python-all.ru/3.1/library/operator.html#operator.methodcaller). See the [*Sorting HOW TO*](https://python-all.ru/3.1/howto/sorting.html#sortinghowto) for examples of how to create and use key functions.555556**именованный аргумент**557558Аргументы, перед которыми в вызове стоит559560`variable_name=`561562. Имя переменной обозначает локальное имя в функции, которому присваивается значение.563564`**`565566используется для принятия или передачи словаря именованных аргументов. См.567568[*аргумент*](https://python-all.ru/3.1/glossary.html#term-argument)569570.571572**лямбда**573574Анонимная встроенная функция, состоящая из одного575576[*выражения*](https://python-all.ru/3.1/glossary.html#term-expression)577578, которое вычисляется при вызове функции. Синтаксис создания лямбда-функции:579580`lambda [аргументы]: выражение`581582**LBYL**583584Сначала подумай, потом делай (Look before you leap). Этот стиль кодирования явно проверяет предусловия перед выполнением вызовов или поиском. Этот стиль противопоставляется подходу585586[*EAFP*](https://python-all.ru/3.1/glossary.html#term-eafp)587588и характеризуется наличием множества инструкций589590[`if`](https://python-all.ru/3.1/reference/compound_stmts.html#if)591592.593594**список**595596Встроенная в Python597598[*последовательность*](https://python-all.ru/3.1/glossary.html#term-sequence)599600. Несмотря на название, она больше похожа на массив в других языках, чем на связный список, поскольку доступ к элементам осуществляется за O(1).601602**генератор списка**603604Компактный способ обработать все или часть элементов последовательности и вернуть список с результатами.605606`result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]`607608генерирует список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Часть609610[`if`](https://python-all.ru/3.1/reference/compound_stmts.html#if)611612необязательна. Если её опустить, обрабатываются все элементы из613614`range(256)`615616.617618**загрузчик**619620Объект, который загружает модуль. Должен определять метод621622`load_module()`623624. Загрузчик обычно возвращается625626[*искателем*](https://python-all.ru/3.1/glossary.html#term-finder)627628. Подробнее см.629630[**PEP 302**](https://python-all.ru/3.1/glossary.html)631632и633634[`importlib.abc.Loader`](https://python-all.ru/3.1/library/importlib.html#importlib.abc.Loader)635636в качестве637638[*абстрактного базового класса*](https://python-all.ru/3.1/glossary.html#term-abstract-base-class)639640.641642**отображение**643644Контейнерный объект (например,645646[`dict`](https://python-all.ru/3.1/library/stdtypes.html#dict)647648), поддерживающий произвольный поиск по ключу с помощью специального метода649650[`__getitem__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getitem__)651652. Отображения также поддерживают653654[`__len__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__len__)655656,657658[`__iter__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__iter__)659660и661662[`__contains__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__contains__)663664.665666**метакласс**667668Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за приём этих трёх аргументов и создание класса. Большинство объектно-ориентированных языков программирования предоставляют реализацию по умолчанию. Особенность Python в том, что можно создавать пользовательские метаклассы. Большинству пользователей этот инструмент никогда не понадобится, но когда возникает необходимость, метаклассы могут предоставить мощные и элегантные решения. Они использовались для логирования доступа к атрибутам, добавления потокобезопасности, отслеживания создания объектов, реализации синглтонов и многих других задач.669670Дополнительную информацию можно найти в [*Настройка создания классов*](https://python-all.ru/3.1/reference/datamodel.html#metaclasses).671672**метод**673674Функция, определённая внутри тела класса. Если она вызывается как атрибут экземпляра этого класса, метод получает объект экземпляра в качестве первого675676[*аргумента*](https://python-all.ru/3.1/glossary.html#term-argument)677678(который обычно называется679680`self`681682). См. также683684[*функция*](https://python-all.ru/3.1/glossary.html#term-function)685686и687688[*вложенная область видимости*](https://python-all.ru/3.1/glossary.html#term-nested-scope)689690.691692**изменяемый**693694Изменяемые объекты могут менять своё значение, сохраняя свой695696[`id()`](https://python-all.ru/3.1/library/functions.html#id)697698. См. также699700[*неизменяемый*](https://python-all.ru/3.1/glossary.html#term-immutable)701702.703704**именованный кортеж**705706Любой класс, подобный кортежу, индексируемые элементы которого также доступны через именованные атрибуты (например, [`time.localtime()`](https://python-all.ru/3.1/library/time.html#time.localtime) возвращает подобный кортежу объект, в котором *year* доступен либо по индексу, например `t[0]`, либо через именованный атрибут, например `t.tm_year`).707708Именованный кортеж может быть встроенным типом, например [`time.struct_time`](https://python-all.ru/3.1/library/time.html#time.struct_time), или может быть создан с помощью обычного определения класса. Полнофункциональный именованный кортеж также можно создать с помощью фабричной функции [`collections.namedtuple()`](https://python-all.ru/3.1/library/collections.html#collections.namedtuple). Последний подход автоматически предоставляет дополнительные возможности, такие как самодокументируемое представление, например `Employee(name='jones', title='programmer')`.709710**пространство имён**711712Место, где хранится переменная. Пространства имён реализованы как словари. Существуют локальное, глобальное и встроенное пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён поддерживают модульность, предотвращая конфликты имён. Например, функции713714`builtins.open()`715716и717718[`os.open()`](https://python-all.ru/3.1/library/os.html#os.open)719720различаются своими пространствами имён. Пространства имён также способствуют читаемости и поддерживаемости, указывая, какой модуль реализует функцию. Например, запись721722[`random.seed()`](https://python-all.ru/3.1/library/random.html#random.seed)723724или725726`itertools.izip()`727728ясно показывает, что эти функции реализованы модулями729730[`random`](https://python-all.ru/3.1/library/random.html#module-random)731732и733734[`itertools`](https://python-all.ru/3.1/library/itertools.html#module-itertools)735736соответственно.737738**вложенная область видимости**739740Возможность ссылаться на переменную из внешнего определения. Например, функция, определённая внутри другой функции, может обращаться к переменным внешней функции. Обратите внимание, что по умолчанию вложенные области видимости работают только для чтения, но не для присваивания. Локальные переменные читаются и записываются в самой внутренней области. Аналогично, глобальные переменные читаются и записываются в глобальном пространстве имён. Ключевое слово741742[`nonlocal`](https://python-all.ru/3.1/reference/simple_stmts.html#nonlocal)743744позволяет выполнять запись во внешние области видимости.745746**класс нового стиля**747748Старое название разновидности классов, которая теперь используется для всех объектов классов. В более ранних версиях Python только классы нового стиля могли использовать новые и универсальные возможности Python, такие как749750`__slots__`751752, дескрипторы, свойства,753754[`__getattribute__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getattribute__)755756, методы класса и статические методы.757758**объект**759760Любые данные с состоянием (атрибуты или значение) и определённым поведением (методы). Также конечный базовый класс любого761762[*класса нового стиля*](https://python-all.ru/3.1/glossary.html#term-new-style-class)763764.765766**позиционный аргумент**767768Аргументы, присвоенные локальным именам внутри функции или метода, определяемые порядком, в котором они были переданы в вызове.769770`*`771772используется либо для принятия нескольких позиционных аргументов (в определении), либо для передачи нескольких аргументов в виде списка функции. См.773774[*аргумент*](https://python-all.ru/3.1/glossary.html#term-argument)775776.777778**Python 3000**779780Прозвище для линейки релизов Python 3.x (придумано давно, когда выпуск версии 3 был чем-то из далёкого будущего). Также сокращённо называется «Py3k».781782**Питоничный**783784Идея или фрагмент кода, который тесно следует наиболее распространённым идиомам языка Python, а не использует концепции, общие для других языков. Например, распространённая идиома в Python – перебор всех элементов итерируемого объекта с помощью оператора [`for`](https://python-all.ru/3.1/reference/compound_stmts.html#for). Во многих других языках такой конструкции нет, поэтому люди, не знакомые с Python, иногда используют числовой счётчик:785786```python787for i in range(len(food)):788    print(food[i])789```790791В отличие от более чистого, питоничного метода:792793```python794for piece in food:795    print(piece)796```797798**счётчик ссылок**799800Число ссылок на объект. Когда счётчик ссылок объекта падает до нуля, он освобождается. Подсчёт ссылок обычно невидим для кода Python, но является ключевым элементом реализации801802[*CPython*](https://python-all.ru/3.1/glossary.html#term-cpython)803804. Модуль805806[`sys`](https://python-all.ru/3.1/library/sys.html#module-sys)807808определяет функцию809810[`getrefcount()`](https://python-all.ru/3.1/library/sys.html#sys.getrefcount)811812, которую программисты могут вызывать для получения счётчика ссылок конкретного объекта.813814**slots**815816Объявление внутри класса, которое экономит память, заранее выделяя место для атрибутов экземпляра и устраняя словари экземпляров. Хотя этот метод популярен, его правильное применение требует некоторой аккуратности, и его лучше использовать только в редких случаях, когда в приложении с критичной памятью создаётся большое количество экземпляров.817818**последовательность**819820Объект821822[*итерабельный*](https://python-all.ru/3.1/glossary.html#term-iterable)823824, поддерживающий эффективный доступ к элементам по целочисленным индексам через специальный метод825826[`__getitem__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getitem__)827828и определяющий метод829830[`len()`](https://python-all.ru/3.1/library/functions.html#len)831832, возвращающий длину последовательности. Некоторые встроенные типы последовательностей:833834[`list`](https://python-all.ru/3.1/library/functions.html#list)835836,837838[`str`](https://python-all.ru/3.1/library/functions.html#str)839840,841842[`tuple`](https://python-all.ru/3.1/library/functions.html#tuple)843844и845846[`bytes`](https://python-all.ru/3.1/library/functions.html#bytes)847848. Обратите внимание, что849850[`dict`](https://python-all.ru/3.1/library/stdtypes.html#dict)851852также поддерживает853854[`__getitem__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getitem__)855856и857858[`__len__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__len__)859860, но считается отображением, а не последовательностью, поскольку поиск использует произвольные861862[*неизменяемые*](https://python-all.ru/3.1/glossary.html#term-immutable)863864ключи, а не целые числа.865866**срез**867868Объект, обычно содержащий часть869870[*последовательности*](https://python-all.ru/3.1/glossary.html#term-sequence)871872. Срез создаётся с помощью синтаксиса индексации,873874`[]`875876с двоеточиями между числами, если указано несколько, как в877878`variable_name[1:3:5]`879880. Синтаксис квадратных скобок (индексации) внутри использует объекты881882[`slice`](https://python-all.ru/3.1/library/functions.html#slice)883884.885886**специальный метод**887888A 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 in889890[*Special method names*](https://python-all.ru/3.1/reference/datamodel.html#specialnames)891892.893894**инструкция**895896Инструкция (statement) – это часть блока (блока кода). Инструкцией является либо897898[*выражение*](https://python-all.ru/3.1/glossary.html#term-expression)899900, либо одна из нескольких конструкций с ключевым словом, таких как901902[`if`](https://python-all.ru/3.1/reference/compound_stmts.html#if)903904,905906[`while`](https://python-all.ru/3.1/reference/compound_stmts.html#while)907908или909910[`for`](https://python-all.ru/3.1/reference/compound_stmts.html#for)911912.913914**строка в тройных кавычках**915916Строка, ограниченная тремя экземплярами либо кавычек («), либо апострофов ('). Хотя они не предоставляют никаких возможностей, недоступных для строк в одинарных кавычках, они полезны по ряду причин. Они позволяют включать в строку неэкранированные одинарные и двойные кавычки и могут занимать несколько строк без использования символа продолжения, что делает их особенно полезными при написании докстрингов.917918**тип**919920Тип объекта Python определяет, что это за объект; каждый объект имеет тип. Тип объекта доступен как его атрибут921922`__class__`923924или может быть получен с помощью925926`type(obj)`927928.929930**представление**931932Объекты, возвращаемые933934[`dict.keys()`](https://python-all.ru/3.1/library/stdtypes.html#dict.keys)935936,937938[`dict.values()`](https://python-all.ru/3.1/library/stdtypes.html#dict.values)939940и941942[`dict.items()`](https://python-all.ru/3.1/library/stdtypes.html#dict.items)943944, называются представлениями словаря. Это ленивые последовательности, которые видят изменения в базовом словаре. Чтобы принудительно преобразовать представление словаря в полноценный список, используйте945946`list(dictview)`947948. См.949950[*Объекты представления словаря*](https://python-all.ru/3.1/library/stdtypes.html#dict-views)951952.953954**виртуальная машина**955956Компьютер, полностью определённый в программном обеспечении. Виртуальная машина Python выполняет957958[*байт-код*](https://python-all.ru/3.1/glossary.html#term-bytecode)959960, генерируемый компилятором байт-кода.961962**Дзен Python**963964Перечень принципов и философии проектирования Python, полезных для понимания и использования языка. Этот перечень можно получить, введя в интерактивном режиме «965966`import this`967968».969