glossary.md
1> **Источник:** https://python-all.ru/3.0/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.0/library/2to3.html#module-lib2to3); отдельная точка входа предоставляется как `Tools/scripts/2to3`. См. [*2to3 – автоматическое преобразование кода Python 2 в 3*](https://python-all.ru/3.0/library/2to3.html#to3-reference).2223**абстрактный базовый класс**2425Абстрактные базовые классы (сокращённо ABC) дополняют2627[*утиную типизацию*](https://python-all.ru/3.0/glossary.html#term-duck-typing)2829, предоставляя способ определения интерфейсов, когда другие методы, такие как3031[`hasattr()`](https://python-all.ru/3.0/library/functions.html#hasattr)3233, были бы неудобны. Python поставляется со многими встроенными ABC для структур данных (в модуле3435[`collections`](https://python-all.ru/3.0/library/collections.html#module-collections)3637), чисел (в модуле3839[`numbers`](https://python-all.ru/3.0/library/numbers.html#module-numbers)4041) и потоков (в модуле4243[`io`](https://python-all.ru/3.0/library/io.html#module-io)4445). Вы можете создать свой собственный ABC с помощью модуля4647[`abc`](https://python-all.ru/3.0/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.0/glossary.html)7879, создатель Python.8081**байткод**8283Исходный код Python компилируется в байткод – внутреннее представление программы Python в интерпретаторе. Байткод также кэшируется в файлах8485`.pyc`8687и8889`.pyo`9091, чтобы при повторном выполнении того же файла это было быстрее (можно избежать перекомпиляции из исходного кода в байткод). Этот «промежуточный язык» выполняется на9293[*виртуальной машине*](https://python-all.ru/3.0/glossary.html#term-virtual-machine)9495, которая исполняет машинный код, соответствующий каждому байткоду.9697**класс**9899Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.100101**приведение типов**102103Неявное преобразование экземпляра одного типа в другой во время операции, включающей два аргумента одного типа. Например,104105`int(3.15)`106107преобразует число с плавающей запятой в целое число108109`3`110111, но в112113`3+4.5`114115каждый аргумент имеет разный тип (один int, другой float), и оба должны быть преобразованы в один и тот же тип, прежде чем их можно будет сложить, иначе будет возбуждено116117`TypeError`118119. Без приведения типов программисту пришлось бы нормализовать все аргументы, даже совместимых типов, до одного значения, например120121`float(3)+4.5`122123, а не просто124125`3+4.5`126127.128129**комплексное число**130131Расширение привычной системы действительных чисел, в котором все числа выражаются как сумма действительной и мнимой частей. Мнимые числа – это действительные кратные мнимой единицы (квадратный корень из132133`-1`134135), часто записываемые как136137`i`138139в математике или140141`j`142143в технике. Python имеет встроенную поддержку комплексных чисел, которые записываются в последней нотации; мнимая часть записывается с суффиксом144145`j`146147, например,148149`3+1j`150151. Чтобы получить доступ к комплексным аналогам модуля152153[`math`](https://python-all.ru/3.0/library/math.html#module-math)154155, используйте156157[`cmath`](https://python-all.ru/3.0/library/cmath.html#module-cmath)158159. Использование комплексных чисел – довольно продвинутая математическая возможность. Если вы не знаете, зачем они вам нужны, почти наверняка их можно безопасно игнорировать.160161**контекстный менеджер**162163Объект, который управляет окружением, видимым в операторе164165[`with`](https://python-all.ru/3.0/reference/compound_stmts.html#with)166167, определяя методы168169[`__enter__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__enter__)170171и172173[`__exit__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__exit__)174175. См.176177[**PEP 343**](https://python-all.ru/3.0/glossary.html)178179.180181**CPython**182183Каноническая реализация языка программирования Python. Термин «CPython» используется в контекстах, где необходимо отличать эту реализацию от других, таких как Jython или IronPython.184185**декоратор**186187Функция, возвращающая другую функцию, обычно применяемая как преобразование функции с использованием синтаксиса `@wrapper`. Распространённые примеры декораторов: [`classmethod()`](https://python-all.ru/3.0/library/functions.html#classmethod) и [`staticmethod()`](https://python-all.ru/3.0/library/functions.html#staticmethod).188189Синтаксис декоратора – всего лишь синтаксический сахар, следующие два определения функций семантически эквивалентны:190191```python192def f(...):193 ...194f = staticmethod(f)195196@staticmethod197def f(...):198 ...199```200201Та же концепция существует и для классов, но там используется реже. См. документацию по [*определениям функций*](https://python-all.ru/3.0/reference/compound_stmts.html#function) и [*определениям классов*](https://python-all.ru/3.0/reference/compound_stmts.html#class) для получения дополнительной информации о декораторах.202203**дескриптор**204205Любой объект, который определяет методы [`__get__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__get__), [`__set__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__set__) или [`__delete__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__delete__). Когда атрибут класса является дескриптором, его специальное поведение связывания срабатывает при поиске атрибута. Обычно использование *a.b* для получения, установки или удаления атрибута ищет объект с именем *b* в словаре класса для *a*, но если *b* является дескриптором, вызывается соответствующий метод дескриптора. Понимание дескрипторов – ключ к глубокому пониманию Python, потому что они являются основой многих возможностей, включая функции, методы, свойства, методы класса, статические методы и ссылки на суперклассы.206207Подробнее о методах дескрипторов см. в [*Implementing Descriptors*](https://python-all.ru/3.0/reference/datamodel.html#descriptors).208209**словарь**210211Ассоциативный массив, в котором произвольные ключи сопоставляются значениям. Использование212213[`dict`](https://python-all.ru/3.0/library/stdtypes.html#dict)214215очень похоже на использование216217[`list`](https://python-all.ru/3.0/library/functions.html#list)218219, но ключи могут быть любыми объектами с функцией220221[`__hash__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__hash__)222223, а не только целыми числами. В Perl называется хешем.224225**докстринг**226227Строковый литерал, который появляется как первое выражение в классе, функции или модуле. Хотя он игнорируется при выполнении блока, он распознаётся компилятором и помещается в атрибут228229`__doc__`230231окружающего класса, функции или модуля. Поскольку он доступен через интроспекцию, это каноническое место для документации объекта.232233**утиная типизация**234235Стиль программирования на Python, который определяет тип объекта по его сигнатуре методов или атрибутов, а не по явной принадлежности к какому-то типу («Если это выглядит как утка и крякает как утка, значит, это утка»). Акцентируя внимание на интерфейсах, а не на конкретных типах, хорошо спроектированный код повышает гибкость за счёт полиморфной подстановки. Утиная типизация избегает проверок с помощью236237[`type()`](https://python-all.ru/3.0/library/functions.html#type)238239или240241[`isinstance()`](https://python-all.ru/3.0/library/functions.html#isinstance)242243. (Однако утиную типизацию можно дополнить абстрактными базовыми классами.) Вместо этого она обычно использует проверки244245[`hasattr()`](https://python-all.ru/3.0/library/functions.html#hasattr)246247или стиль программирования248249[*EAFP (легче попросить прощения, чем разрешения)*](https://python-all.ru/3.0/glossary.html#term-eafp)250251.252253**EAFP**254255Проще попросить прощения, чем разрешения. Этот распространённый стиль программирования на Python предполагает существование правильных ключей или атрибутов и перехватывает исключения, если предположение оказывается неверным. Этот чистый и быстрый стиль характеризуется наличием множества операторов256257[`try`](https://python-all.ru/3.0/reference/compound_stmts.html#try)258259и260261[`except`](https://python-all.ru/3.0/reference/compound_stmts.html#except)262263. Этот подход контрастирует со стилем264265[*LBYL*](https://python-all.ru/3.0/glossary.html#term-lbyl)266267, распространённым во многих других языках, таких как C.268269**выражение**270271Синтаксическая конструкция, которая может быть вычислена в некоторое значение. Другими словами, выражение – это совокупность элементов выражения, таких как литералы, имена, доступ к атрибутам, операторы или вызовы функций, которые возвращают значение. В отличие от многих других языков, не все языковые конструкции являются выражениями. Существуют также272273[*инструкции*](https://python-all.ru/3.0/glossary.html#term-statement)274275, которые нельзя использовать как выражения, например276277[`if`](https://python-all.ru/3.0/reference/compound_stmts.html#if)278279. Присваивания также являются инструкциями, а не выражениями.280281**модуль-расширение**282283Модуль, написанный на C или C++, использующий C API Python для взаимодействия с ядром и пользовательским кодом.284285**целочисленное деление**286287Математическое деление с отбрасыванием остатка. Оператор целочисленного деления –288289`//`290291. Например, выражение292293`11//4`294295вычисляется в296297`2`298299в отличие от300301`2.75`302303, возвращаемого при истинном делении с плавающей запятой.304305**функция**306307Последовательность инструкций, возвращающая значение вызывающему коду. Ей также может быть передано ноль или более аргументов, которые могут использоваться при выполнении тела. См. также308309[*аргумент*](https://python-all.ru/3.0/glossary.html#term-argument)310311и312313[*метод*](https://python-all.ru/3.0/glossary.html#term-method)314315.316317**future**318319Псевдомодуль, который программисты могут использовать для включения новых возможностей языка, несовместимых с текущим интерпретатором.320321Импортировав модуль [`__future__`](https://python-all.ru/3.0/library/__future__.html#module-__future__) и вычислив его переменные, можно увидеть, когда новая возможность была впервые добавлена в язык и когда она стала поведением по умолчанию:322323```python324>>> import __future__325>>> __future__.division326_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)327```328329**сборка мусора**330331Процесс освобождения памяти, когда она больше не используется. Python выполняет сборку мусора с помощью подсчёта ссылок и циклического сборщика мусора, который способен обнаруживать и разрывать циклические ссылки.332333**генератор**334335Функция, которая возвращает итератор. Она выглядит как обычная функция, за исключением того, что значения возвращаются вызывающему коду с помощью оператора336337[`yield`](https://python-all.ru/3.0/reference/simple_stmts.html#yield)338339вместо оператора340341[`return`](https://python-all.ru/3.0/reference/simple_stmts.html#return)342343. Функции-генераторы часто содержат один или несколько циклов344345[`for`](https://python-all.ru/3.0/reference/compound_stmts.html#for)346347или348349[`while`](https://python-all.ru/3.0/reference/compound_stmts.html#while)350351, которые352353[`yield`](https://python-all.ru/3.0/reference/simple_stmts.html#yield)354355(возвращают) элементы обратно вызывающему коду. Выполнение функции останавливается на ключевом слове356357[`yield`](https://python-all.ru/3.0/reference/simple_stmts.html#yield)358359(возвращая результат) и возобновляется оттуда, когда следующий элемент запрашивается вызовом метода360361`__next__()`362363возвращённого итератора.364365**генераторное выражение**366367Выражение, возвращающее генератор. Оно выглядит как обычное выражение, за которым следует выражение [`for`](https://python-all.ru/3.0/reference/compound_stmts.html#for), определяющее переменную цикла, диапазон и необязательное выражение [`if`](https://python-all.ru/3.0/reference/compound_stmts.html#if). Совместное выражение генерирует значения для внешней функции:368369```python370>>> sum(i*i for i in range(10)) # сумма квадратов 0, 1, 4, ... 81371285372```373374**GIL**375376См.377378[*глобальная блокировка интерпретатора*](https://python-all.ru/3.0/glossary.html#term-global-interpreter-lock)379380.381382**глобальная блокировка интерпретатора**383384Блокировка, используемая потоками Python для гарантии того, что только один поток выполняется в385386[*CPython*](https://python-all.ru/3.0/glossary.html#term-cpython)387388[*виртуальной машине*](https://python-all.ru/3.0/glossary.html#term-virtual-machine)389390в каждый момент времени. Это упрощает реализацию CPython, гарантируя, что никакие два процесса не могут одновременно получить доступ к одной и той же памяти. Блокировка всего интерпретатора упрощает его многопоточность, но ценой потери значительной части параллелизма, обеспечиваемого многопроцессорными машинами. В прошлом предпринимались попытки создать «свободно-поточный» интерпретатор (такой, который блокирует разделяемые данные с гораздо более мелкой гранулярностью), но пока ни одна из них не увенчалась успехом, поскольку производительность страдала в обычном однопроцессорном случае.391392**хешируемый**393394Объект является *хэшируемым*, если у него есть хэш-значение, которое никогда не меняется в течение его жизни (нужен метод [`__hash__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__hash__)), и его можно сравнивать с другими объектами (нужен метод [`__eq__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__eq__)). Хэшируемые объекты, которые сравниваются как равные, должны иметь одинаковое хэш-значение.395396Хешируемость позволяет использовать объект в качестве ключа словаря и элемента множества, поскольку эти структуры данных внутренне используют хеш-значение.397398Все неизменяемые встроенные объекты Python являются хешируемыми, в то время как ни один изменяемый контейнер (например, списки или словари) не является хешируемым. Объекты, являющиеся экземплярами пользовательских классов, по умолчанию хешируемы; все они сравниваются как неравные, и их хеш-значение – это их [`id()`](https://python-all.ru/3.0/library/functions.html#id).399400**IDLE**401402Интегрированная среда разработки для Python. IDLE – это базовый редактор и среда интерпретатора, поставляемые со стандартным дистрибутивом Python. Подходит для начинающих, а также служит наглядным примером кода для тех, кто хочет реализовать умеренно сложное многоплатформенное GUI-приложение.403404**неизменяемый**405406Объект с фиксированным значением. К неизменяемым объектам относятся числа, строки и кортежи. Такой объект нельзя изменить. Если требуется сохранить другое значение, необходимо создать новый объект. Они играют важную роль там, где требуется постоянное хеш-значение, например в качестве ключа в словаре.407408**интерактивный**409410Python включает интерактивный интерпретатор: можно вводить инструкции и выражения в приглашении интерпретатора, сразу же выполнять их и видеть результат. Просто запустите411412`python`413414без аргументов (возможно, выбрав его из главного меню компьютера). Это очень удобный способ опробовать новые идеи или изучить модули и пакеты (вспомните415416`help(x)`417418).419420**интерпретируемый**421422Python является интерпретируемым языком, в отличие от компилируемых, хотя различие может быть размытым из-за наличия компилятора байткода. Это означает, что исходные файлы можно запускать напрямую, без явного создания исполняемого файла, который затем выполняется. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя их программы, как правило, выполняются медленнее. См. также423424[*интерактивный*](https://python-all.ru/3.0/glossary.html#term-interactive)425426.427428**итерируемый объект**429430Объект-контейнер, способный возвращать свои элементы по одному. Примеры итерируемых объектов включают все типы последовательностей (такие как431432[`list`](https://python-all.ru/3.0/library/functions.html#list)433434,435436[`str`](https://python-all.ru/3.0/library/functions.html#str)437438и439440[`tuple`](https://python-all.ru/3.0/library/functions.html#tuple)441442), а также некоторые непоследовательные типы, например443444[`dict`](https://python-all.ru/3.0/library/stdtypes.html#dict)445446и447448`file`449450, и объекты любых классов, определённых с помощью метода451452[`__iter__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__iter__)453454или455456[`__getitem__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getitem__)457458. Итерируемые объекты можно использовать в цикле459460[`for`](https://python-all.ru/3.0/reference/compound_stmts.html#for)461462и во многих других местах, где требуется последовательность (463464[`zip()`](https://python-all.ru/3.0/library/functions.html#zip)465466,467468[`map()`](https://python-all.ru/3.0/library/functions.html#map)469470, ...). Когда итерируемый объект передаётся в качестве аргумента встроенной функции471472[`iter()`](https://python-all.ru/3.0/library/functions.html#iter)473474, она возвращает итератор для этого объекта. Этот итератор годится для одного прохода по набору значений. При использовании итерируемых объектов обычно не требуется вызывать475476[`iter()`](https://python-all.ru/3.0/library/functions.html#iter)477478или самостоятельно работать с объектами-итераторами. Оператор479480`for`481482делает это автоматически, создавая временную безымянную переменную для хранения итератора на время цикла. См. также483484[*итератор*](https://python-all.ru/3.0/glossary.html#term-iterator)485486,487488[*последовательность*](https://python-all.ru/3.0/glossary.html#term-sequence)489490и491492[*генератор*](https://python-all.ru/3.0/glossary.html#term-generator)493494.495496**итератор**497498Объект, представляющий поток данных. Повторные вызовы метода `__next__()` итератора (или передача его встроенной функции [`next()`](https://python-all.ru/3.0/library/functions.html#next)) возвращают последовательные элементы потока. Когда данные заканчиваются, вместо этого возбуждается исключение [`StopIteration`](https://python-all.ru/3.0/library/exceptions.html#exceptions.StopIteration). После этого объект итератора исчерпан, и любые дальнейшие вызовы его метода [`next()`](https://python-all.ru/3.0/library/functions.html#next) снова возбуждают [`StopIteration`](https://python-all.ru/3.0/library/exceptions.html#exceptions.StopIteration). Итераторы должны иметь метод [`__iter__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__iter__), который возвращает сам объект итератора, поэтому каждый итератор также является итерируемым и может использоваться в большинстве мест, где принимаются другие итерируемые объекты. Одним заметным исключением является код, который пытается выполнить несколько проходов итерации. Объект-контейнер (например, [`list`](https://python-all.ru/3.0/library/functions.html#list)) создаёт новый свежий итератор каждый раз, когда вы передаёте его функции [`iter()`](https://python-all.ru/3.0/library/functions.html#iter) или используете в цикле [`for`](https://python-all.ru/3.0/reference/compound_stmts.html#for). Попытка сделать то же самое с итератором просто вернёт тот же исчерпанный объект итератора, который использовался в предыдущем проходе, что заставит его выглядеть как пустой контейнер.499500Дополнительную информацию можно найти в [*Iterator Types*](https://python-all.ru/3.0/library/stdtypes.html#typeiter).501502**именованный аргумент**503504Аргументы, перед которыми в вызове стоит505506`variable_name=`507508. Имя переменной обозначает локальное имя в функции, которому присваивается значение.509510`**`511512используется для принятия или передачи словаря именованных аргументов. См.513514[*аргумент*](https://python-all.ru/3.0/glossary.html#term-argument)515516.517518**лямбда**519520Анонимная встроенная функция, состоящая из одного521522[*выражения*](https://python-all.ru/3.0/glossary.html#term-expression)523524, которое вычисляется при вызове функции. Синтаксис создания лямбда-функции:525526`lambda [аргументы]: выражение`527528**LBYL**529530Сначала подумай, потом делай (Look before you leap). Этот стиль кодирования явно проверяет предусловия перед выполнением вызовов или поиском. Этот стиль противопоставляется подходу531532[*EAFP*](https://python-all.ru/3.0/glossary.html#term-eafp)533534и характеризуется наличием множества инструкций535536[`if`](https://python-all.ru/3.0/reference/compound_stmts.html#if)537538.539540**список**541542Встроенная в Python543544[*последовательность*](https://python-all.ru/3.0/glossary.html#term-sequence)545546. Несмотря на название, она больше похожа на массив в других языках, чем на связный список, поскольку доступ к элементам осуществляется за O(1).547548**генератор списка**549550Компактный способ обработки всех или части элементов последовательности и возврата списка результатов.551552`result = ["0x%02x" % x for x in range(256) if x % 2 == 0]`553554генерирует список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Предложение555556[`if`](https://python-all.ru/3.0/reference/compound_stmts.html#if)557558необязательно. Если оно опущено, обрабатываются все элементы в559560`range(256)`561562.563564**отображение**565566Объект-контейнер (например,567568[`dict`](https://python-all.ru/3.0/library/stdtypes.html#dict)569570), поддерживающий поиск по произвольным ключам с помощью специального метода571572[`__getitem__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getitem__)573574.575576**метакласс**577578Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за приём этих трёх аргументов и создание класса. Большинство объектно-ориентированных языков программирования предоставляют реализацию по умолчанию. Особенность Python в том, что можно создавать пользовательские метаклассы. Большинству пользователей этот инструмент никогда не понадобится, но когда возникает необходимость, метаклассы могут предоставить мощные и элегантные решения. Они использовались для логирования доступа к атрибутам, добавления потокобезопасности, отслеживания создания объектов, реализации синглтонов и многих других задач.579580Дополнительную информацию можно найти в [*Настройка создания классов*](https://python-all.ru/3.0/reference/datamodel.html#metaclasses).581582**метод**583584Функция, определённая внутри тела класса. Если она вызывается как атрибут экземпляра этого класса, метод получает объект экземпляра в качестве первого585586[*аргумента*](https://python-all.ru/3.0/glossary.html#term-argument)587588(который обычно называется589590`self`591592). См. также593594[*функция*](https://python-all.ru/3.0/glossary.html#term-function)595596и597598[*вложенная область видимости*](https://python-all.ru/3.0/glossary.html#term-nested-scope)599600.601602**изменяемый**603604Изменяемые объекты могут менять своё значение, сохраняя свой605606[`id()`](https://python-all.ru/3.0/library/functions.html#id)607608. См. также609610[*неизменяемый*](https://python-all.ru/3.0/glossary.html#term-immutable)611612.613614**именованный кортеж**615616Любой класс, подобный кортежу, индексируемые элементы которого также доступны через именованные атрибуты (например, [`time.localtime()`](https://python-all.ru/3.0/library/time.html#time.localtime) возвращает подобный кортежу объект, в котором *year* доступен либо по индексу, например `t[0]`, либо через именованный атрибут, например `t.tm_year`).617618Именованный кортеж может быть встроенным типом, например [`time.struct_time`](https://python-all.ru/3.0/library/time.html#time.struct_time), или может быть создан с помощью обычного определения класса. Полнофункциональный именованный кортеж также можно создать с помощью фабричной функции [`collections.namedtuple()`](https://python-all.ru/3.0/library/collections.html#collections.namedtuple). Последний подход автоматически предоставляет дополнительные возможности, такие как самодокументируемое представление, например `Employee(name='jones', title='programmer')`.619620**пространство имён**621622Место, где хранится переменная. Пространства имён реализуются как словари. Существуют локальное, глобальное и встроенное пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён поддерживают модульность, предотвращая конфликты имён. Например, функции623624`builtins.open()`625626и627628[`os.open()`](https://python-all.ru/3.0/library/os.html#os.open)629630различаются по своим пространствам имён. Пространства имён также улучшают читаемость и поддерживаемость, позволяя понять, какой модуль реализует функцию. Например, запись631632[`random.seed()`](https://python-all.ru/3.0/library/random.html#random.seed)633634или635636`itertools.izip()`637638даёт понять, что эти функции реализованы модулями639640[`random`](https://python-all.ru/3.0/library/random.html#module-random)641642и643644[`itertools`](https://python-all.ru/3.0/library/itertools.html#module-itertools)645646соответственно.647648**вложенная область видимости**649650Возможность ссылаться на переменную во внешнем определении. Например, функция, определённая внутри другой функции, может ссылаться на переменные внешней функции. Обратите внимание: вложенные области видимости работают только для чтения, а не для присваивания, которое всегда записывает в самую внутреннюю область. В отличие от этого, локальные переменные и читаются, и записываются в самой внутренней области. Аналогично, глобальные переменные читаются и записываются в глобальном пространстве имён.651652**класс нового стиля**653654Старое название разновидности классов, которая теперь используется для всех объектов классов. В более ранних версиях Python только классы нового стиля могли использовать новые и универсальные возможности Python, такие как655656`__slots__`657658, дескрипторы, свойства,659660[`__getattribute__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getattribute__)661662, методы класса и статические методы.663664**объект**665666Любые данные с состоянием (атрибуты или значение) и определённым поведением (методы). Также конечный базовый класс любого667668[*класса нового стиля*](https://python-all.ru/3.0/glossary.html#term-new-style-class)669670.671672**позиционный аргумент**673674Аргументы, присвоенные локальным именам внутри функции или метода, определяемые порядком, в котором они были переданы в вызове.675676`*`677678используется либо для принятия нескольких позиционных аргументов (в определении), либо для передачи нескольких аргументов в виде списка функции. См.679680[*аргумент*](https://python-all.ru/3.0/glossary.html#term-argument)681682.683684**Python 3000**685686Прозвище для линейки релизов Python 3.x (придумано давно, когда выпуск версии 3 был чем-то из далёкого будущего). Также сокращённо называется «Py3k».687688**Питоничный**689690Идея или фрагмент кода, который тесно следует наиболее распространённым идиомам языка Python, а не использует концепции, общие для других языков. Например, распространённая идиома в Python – перебор всех элементов итерируемого объекта с помощью оператора [`for`](https://python-all.ru/3.0/reference/compound_stmts.html#for). Во многих других языках такой конструкции нет, поэтому люди, не знакомые с Python, иногда используют числовой счётчик:691692```python693for i in range(len(food)):694 print(food[i])695```696697В отличие от более чистого, питоничного метода:698699```python700for piece in food:701 print(piece)702```703704**счётчик ссылок**705706Количество ссылок на объект. Когда счётчик ссылок объекта падает до нуля, он освобождается. Подсчёт ссылок обычно не виден в коде Python, но является ключевым элементом реализации707708[*CPython*](https://python-all.ru/3.0/glossary.html#term-cpython)709710. Модуль711712[`sys`](https://python-all.ru/3.0/library/sys.html#module-sys)713714определяет функцию715716`getrefcount()`717718, которую программисты могут вызывать для получения счётчика ссылок для конкретного объекта.719720**slots**721722Объявление внутри класса, которое экономит память, заранее выделяя место для атрибутов экземпляра и устраняя словари экземпляров. Хотя этот метод популярен, его правильное применение требует некоторой аккуратности, и его лучше использовать только в редких случаях, когда в приложении с критичной памятью создаётся большое количество экземпляров.723724**последовательность**725726[*Итерируемый объект*](https://python-all.ru/3.0/glossary.html#term-iterable)727728, который поддерживает эффективный доступ к элементам по целочисленным индексам через специальный метод729730[`__getitem__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getitem__)731732и определяет метод733734[`len()`](https://python-all.ru/3.0/library/functions.html#len)735736, возвращающий длину последовательности. Некоторые встроенные типы последовательностей:737738[`list`](https://python-all.ru/3.0/library/functions.html#list)739740,741742[`str`](https://python-all.ru/3.0/library/functions.html#str)743744,745746[`tuple`](https://python-all.ru/3.0/library/functions.html#tuple)747748и749750`unicode`751752. Обратите внимание:753754[`dict`](https://python-all.ru/3.0/library/stdtypes.html#dict)755756тоже поддерживает757758[`__getitem__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getitem__)759760и761762[`__len__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__len__)763764, но считается отображением, а не последовательностью, поскольку поиск использует произвольные765766[*неизменяемые*](https://python-all.ru/3.0/glossary.html#term-immutable)767768ключи, а не целые числа.769770**срез**771772Объект, обычно содержащий часть773774[*последовательности*](https://python-all.ru/3.0/glossary.html#term-sequence)775776. Срез создаётся с помощью синтаксиса индексации,777778`[]`779780с двоеточиями между числами, если указано несколько, как в781782`variable_name[1:3:5]`783784. Синтаксис квадратных скобок (индексации) внутри использует объекты785786[`slice`](https://python-all.ru/3.0/library/functions.html#slice)787788.789790**специальный метод**791792A 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 in793794[*Special method names*](https://python-all.ru/3.0/reference/datamodel.html#specialnames)795796.797798**инструкция**799800Инструкция (statement) – это часть блока (блока кода). Инструкцией является либо801802[*выражение*](https://python-all.ru/3.0/glossary.html#term-expression)803804, либо одна из нескольких конструкций с ключевым словом, таких как805806[`if`](https://python-all.ru/3.0/reference/compound_stmts.html#if)807808,809810[`while`](https://python-all.ru/3.0/reference/compound_stmts.html#while)811812или813814[`for`](https://python-all.ru/3.0/reference/compound_stmts.html#for)815816.817818**строка в тройных кавычках**819820Строка, ограниченная тремя экземплярами либо кавычек («), либо апострофов ('). Хотя они не предоставляют никаких возможностей, недоступных для строк в одинарных кавычках, они полезны по ряду причин. Они позволяют включать в строку неэкранированные одинарные и двойные кавычки и могут занимать несколько строк без использования символа продолжения, что делает их особенно полезными при написании докстрингов.821822**тип**823824Тип объекта Python определяет, что это за объект; каждый объект имеет тип. Тип объекта доступен как его атрибут825826`__class__`827828или может быть получен с помощью829830`type(obj)`831832.833834**представление**835836Объекты, возвращаемые из837838[`dict.keys()`](https://python-all.ru/3.0/library/stdtypes.html#dict.keys)839840,841842[`dict.items()`](https://python-all.ru/3.0/library/stdtypes.html#dict.items)843844и845846[`dict.items()`](https://python-all.ru/3.0/library/stdtypes.html#dict.items)847848, называются представлениями словаря. Это ленивые последовательности, которые отслеживают изменения в базовом словаре. Чтобы превратить представление словаря в полноценный список, используйте849850`list(dictview)`851852. См.853854[*Объекты представлений словаря*](https://python-all.ru/3.0/library/stdtypes.html#dict-views)855856.857858**виртуальная машина**859860Компьютер, полностью определённый в программном обеспечении. Виртуальная машина Python выполняет861862[*байт-код*](https://python-all.ru/3.0/glossary.html#term-bytecode)863864, генерируемый компилятором байт-кода.865866**Дзен Python**867868Перечень принципов и философии проектирования Python, полезных для понимания и использования языка. Этот перечень можно получить, введя в интерактивном режиме «869870`import this`871872».873