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

glossary.md

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

1> **Источник:** https://python-all.ru/2.6/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/2.6/library/2to3.html#module-lib2to3); отдельная точка входа предоставляется как `Tools/scripts/2to3`. См. [*2to3 – автоматическое преобразование кода Python 2 в 3*](https://python-all.ru/2.6/library/2to3.html#to3-reference).2223**абстрактный базовый класс**2425Абстрактные базовые классы (сокращённо ABC) дополняют2627[*утиную типизацию*](https://python-all.ru/2.6/glossary.html#term-duck-typing)2829, предоставляя способ определения интерфейсов, когда другие техники, такие как3031[`hasattr()`](https://python-all.ru/2.6/library/functions.html#hasattr)3233, были бы неудобны. Python поставляется со многими встроенными ABC для структур данных (в модуле3435[`collections`](https://python-all.ru/2.6/library/collections.html#module-collections)3637), чисел (в модуле3839[`numbers`](https://python-all.ru/2.6/library/numbers.html#module-numbers)4041) и потоков (в модуле4243[`io`](https://python-all.ru/2.6/library/io.html#module-io)4445). Собственный ABC можно создать с помощью модуля4647[`abc`](https://python-all.ru/2.6/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/2.6/glossary.html)7879, создатель Python.8081**байткод**8283Исходный код Python компилируется в байткод – внутреннее представление программы Python в интерпретаторе. Байткод также кэшируется в файлах8485`.pyc`8687и8889`.pyo`9091, чтобы при повторном выполнении того же файла это было быстрее (можно избежать перекомпиляции из исходного кода в байткод). Этот «промежуточный язык» выполняется на9293[*виртуальной машине*](https://python-all.ru/2.6/glossary.html#term-virtual-machine)9495, которая исполняет машинный код, соответствующий каждому байткоду.9697**класс**9899Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.100101**классический класс**102103Любой класс, который не наследуется от104105[`object`](https://python-all.ru/2.6/library/functions.html#object)106107. См.108109[*классы нового стиля*](https://python-all.ru/2.6/glossary.html#term-new-style-class)110111. Классы классического стиля будут удалены в Python 3.0.112113**приведение типов**114115Неявное преобразование экземпляра одного типа в другой при выполнении операции, которая включает два аргумента одного типа. Например,116117`int(3.15)`118119преобразует число с плавающей точкой в целое120121`3`122123, но в124125`3+4.5`126127каждый аргумент имеет разный тип (один int, другой float), и оба должны быть преобразованы к одному типу, прежде чем их можно будет сложить, иначе будет вызвано128129`TypeError`130131. Приведение между двумя операндами можно выполнить с помощью встроенной функции132133`coerce`134135; таким образом,136137`3+4.5`138139эквивалентно вызову140141`operator.add(*coerce(3, 4.5))`142143и приводит к144145`operator.add(3.0, 4.5)`146147. Без приведения все аргументы, даже совместимых типов, пришлось бы приводить к одному значению программистом, например,148149`float(3)+4.5`150151вместо просто152153`3+4.5`154155.156157**комплексное число**158159Расширение привычной системы действительных чисел, в котором все числа выражаются как сумма действительной и мнимой части. Мнимые числа – это действительные кратные мнимой единицы (квадратный корень из160161`-1`162163), часто записываемой как164165`i`166167в математике или168169`j`170171в технике. Python имеет встроенную поддержку комплексных чисел, которые записываются в последнем обозначении; мнимая часть записывается с суффиксом172173`j`174175, например,176177`3+1j`178179. Для доступа к комплексным аналогам модуля180181[`math`](https://python-all.ru/2.6/library/math.html#module-math)182183используйте184185[`cmath`](https://python-all.ru/2.6/library/cmath.html#module-cmath)186187. Использование комплексных чисел – довольно продвинутая математическая возможность. Если вы не осознаёте необходимости в них, почти наверняка их можно безопасно игнорировать.188189**контекстный менеджер**190191Объект, который управляет окружением, видимым в операторе192193[`with`](https://python-all.ru/2.6/reference/compound_stmts.html#with)194195, определяя методы196197[`__enter__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__enter__)198199и200201[`__exit__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__exit__)202203. См.204205[**PEP 343**](https://python-all.ru/2.6/glossary.html)206207.208209**CPython**210211Каноническая реализация языка программирования Python. Термин «CPython» используется в контекстах, где необходимо отличать эту реализацию от других, таких как Jython или IronPython.212213**декоратор**214215Функция, возвращающая другую функцию, обычно применяемая как преобразование функции с использованием синтаксиса `@wrapper`. Распространённые примеры декораторов: [`classmethod()`](https://python-all.ru/2.6/library/functions.html#classmethod) и [`staticmethod()`](https://python-all.ru/2.6/library/functions.html#staticmethod).216217Синтаксис декоратора – всего лишь синтаксический сахар, следующие два определения функций семантически эквивалентны:218219```python220def f(...):221    ...222f = staticmethod(f)223224@staticmethod225def f(...):226    ...227```228229См. [*документацию по определению функций*](https://python-all.ru/2.6/reference/compound_stmts.html#function) для получения дополнительной информации о декораторах.230231**дескриптор**232233Любой объект *нового стиля*, который определяет методы [`__get__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__get__), [`__set__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__set__) или [`__delete__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__delete__). Когда атрибут класса является дескриптором, его особое поведение связывания срабатывает при поиске атрибута. Обычно при использовании *a.b* для получения, установки или удаления атрибута ищется объект с именем *b* в словаре класса для *a*, но если *b* является дескриптором, вызывается соответствующий метод дескриптора. Понимание дескрипторов – ключ к глубокому пониманию Python, поскольку они являются основой для многих возможностей, включая функции, методы, свойства, методы класса, статические методы и ссылки на суперклассы.234235Подробнее о методах дескрипторов см. в [*Implementing Descriptors*](https://python-all.ru/2.6/reference/datamodel.html#descriptors).236237**словарь**238239Ассоциативный массив, в котором произвольные ключи сопоставляются значениям. Использование240241[`dict`](https://python-all.ru/2.6/library/stdtypes.html#dict)242243очень похоже на использование244245[`list`](https://python-all.ru/2.6/library/functions.html#list)246247, но ключи могут быть любыми объектами с функцией248249[`__hash__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__hash__)250251, а не только целыми числами. В Perl называется хешем.252253**докстринг**254255Строковый литерал, который появляется как первое выражение в классе, функции или модуле. Хотя он игнорируется при выполнении блока, он распознаётся компилятором и помещается в атрибут256257`__doc__`258259окружающего класса, функции или модуля. Поскольку он доступен через интроспекцию, это каноническое место для документации объекта.260261**утиная типизация**262263Стиль программирования на Python, в котором тип объекта определяется по его методам или сигнатуре атрибутов, а не по явной принадлежности к некоторому типу («Если это выглядит как утка и крякает как утка, то это, должно быть, утка»). Упор на интерфейсы, а не на конкретные типы, позволяет хорошо спроектированному коду быть более гибким за счет полиморфной подстановки. Утиная типизация избегает проверок с помощью264265[`type()`](https://python-all.ru/2.6/library/functions.html#type)266267или268269[`isinstance()`](https://python-all.ru/2.6/library/functions.html#isinstance)270271. (Однако утиная типизация может дополняться272273[*абстрактными базовыми классами*](https://python-all.ru/2.6/glossary.html#term-abstract-base-class)274275.) Вместо этого обычно используются проверки276277[`hasattr()`](https://python-all.ru/2.6/library/functions.html#hasattr)278279или программирование в стиле280281[*EAFP*](https://python-all.ru/2.6/glossary.html#term-eafp)282283.284285**EAFP**286287Проще попросить прощения, чем разрешения. Этот распространённый стиль программирования на Python предполагает существование правильных ключей или атрибутов и перехватывает исключения, если предположение оказывается неверным. Этот чистый и быстрый стиль характеризуется наличием множества операторов288289[`try`](https://python-all.ru/2.6/reference/compound_stmts.html#try)290291и292293[`except`](https://python-all.ru/2.6/reference/compound_stmts.html#except)294295. Этот подход контрастирует со стилем296297[*LBYL*](https://python-all.ru/2.6/glossary.html#term-lbyl)298299, распространённым во многих других языках, таких как C.300301**выражение**302303Часть синтаксиса, которая может быть вычислена в некоторое значение. Другими словами, выражение – это совокупность элементов выражения, таких как литералы, имена, доступ к атрибутам, операторы или вызовы функций, которые возвращают значение. В отличие от многих других языков, не все языковые конструкции являются выражениями. Существуют также304305[*инструкции*](https://python-all.ru/2.6/glossary.html#term-statement)306307, которые нельзя использовать как выражения, например308309[`print`](https://python-all.ru/2.6/reference/simple_stmts.html#print)310311или312313[`if`](https://python-all.ru/2.6/reference/compound_stmts.html#if)314315. Присваивания также являются инструкциями, а не выражениями.316317**модуль-расширение**318319Модуль, написанный на C или C++, использующий C API Python для взаимодействия с ядром и пользовательским кодом.320321**искатель**322323Объект, который пытается найти324325[*загрузчик*](https://python-all.ru/2.6/glossary.html#term-loader)326327для модуля. Он должен реализовывать метод с именем328329`find_module()`330331. Подробнее см.332333[**PEP 302**](https://python-all.ru/2.6/glossary.html)334335.336337**функция**338339Последовательность инструкций, возвращающая значение вызывающему коду. Ей также может быть передано ноль или более аргументов, которые могут использоваться при выполнении тела. См. также340341[*аргумент*](https://python-all.ru/2.6/glossary.html#term-argument)342343и344345[*метод*](https://python-all.ru/2.6/glossary.html#term-method)346347.348349**future**350351Псевдомодуль, который программисты могут использовать для включения новых возможностей языка, несовместимых с текущим интерпретатором. Например, выражение `11/4` в настоящее время вычисляется как `2`. Если в модуле, в котором оно выполняется, было включено *настоящее деление* с помощью выполнения:352353```python354from __future__ import division355```356357выражение `11/4` вычислялось бы как `2.75`. Импортировав модуль [`__future__`](https://python-all.ru/2.6/library/__future__.html#module-__future__) и вычислив его переменные, можно узнать, когда новая возможность была впервые добавлена в язык и когда она станет поведением по умолчанию:358359```python360>>> import __future__361>>> __future__.division362_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)363```364365**сборка мусора**366367Процесс освобождения памяти, когда она больше не используется. Python выполняет сборку мусора с помощью подсчёта ссылок и циклического сборщика мусора, который способен обнаруживать и разрывать циклические ссылки.368369**генератор**370371Функция, которая возвращает итератор. Она выглядит как обычная функция, за исключением того, что значения возвращаются вызывающей стороне с помощью оператора372373[`yield`](https://python-all.ru/2.6/reference/simple_stmts.html#yield)374375вместо оператора376377[`return`](https://python-all.ru/2.6/reference/simple_stmts.html#return)378379. Функции-генераторы часто содержат один или несколько циклов380381[`for`](https://python-all.ru/2.6/reference/compound_stmts.html#for)382383или384385[`while`](https://python-all.ru/2.6/reference/compound_stmts.html#while)386387, которые388389[`yield`](https://python-all.ru/2.6/reference/simple_stmts.html#yield)390391элементы обратно вызывающей стороне. Выполнение функции останавливается на ключевом слове392393[`yield`](https://python-all.ru/2.6/reference/simple_stmts.html#yield)394395(возвращая результат) и возобновляется с этого места, когда следующий элемент запрашивается вызовом метода396397[`next()`](https://python-all.ru/2.6/library/functions.html#next)398399возвращённого итератора.400401**генераторное выражение**402403Выражение, которое возвращает итератор. Оно выглядит как обычное выражение, за которым следует выражение [`for`](https://python-all.ru/2.6/reference/compound_stmts.html#for), определяющее переменную цикла, диапазон и необязательное выражение [`if`](https://python-all.ru/2.6/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/2.6/glossary.html#term-global-interpreter-lock)415416.417418**глобальная блокировка интерпретатора**419420Блокировка, используемая потоками Python для гарантии того, что только один поток выполняется в421422[*CPython*](https://python-all.ru/2.6/glossary.html#term-cpython)423424[*виртуальной машине*](https://python-all.ru/2.6/glossary.html#term-virtual-machine)425426в каждый момент времени. Это упрощает реализацию CPython, гарантируя, что никакие два процесса не могут одновременно получить доступ к одной и той же памяти. Блокировка всего интерпретатора упрощает его многопоточность, но ценой потери значительной части параллелизма, обеспечиваемого многопроцессорными машинами. В прошлом предпринимались попытки создать «свободно-поточный» интерпретатор (такой, который блокирует разделяемые данные с гораздо более мелкой гранулярностью), но пока ни одна из них не увенчалась успехом, поскольку производительность страдала в обычном однопроцессорном случае.427428**хешируемый**429430Объект является *хешируемым*, если он имеет хеш-значение, которое никогда не меняется в течение его жизни (для этого требуется метод [`__hash__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__hash__)) и может быть сравнён с другими объектами (для этого требуется метод [`__eq__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__eq__) или [`__cmp__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__cmp__)). Хешируемые объекты, которые при сравнении равны, должны иметь одно и то же хеш-значение.431432Хешируемость позволяет использовать объект в качестве ключа словаря и элемента множества, поскольку эти структуры данных внутренне используют хеш-значение.433434Все неизменяемые встроенные объекты Python являются хешируемыми, в то время как ни один изменяемый контейнер (например, списки или словари) не является хешируемым. Объекты, являющиеся экземплярами пользовательских классов, по умолчанию хешируемы; все они сравниваются как неравные, и их хеш-значение – это их [`id()`](https://python-all.ru/2.6/library/functions.html#id).435436**IDLE**437438Интегрированная среда разработки для Python. IDLE – это базовый редактор и среда интерпретатора, поставляемые со стандартным дистрибутивом Python. Подходит для начинающих, а также служит наглядным примером кода для тех, кто хочет реализовать умеренно сложное многоплатформенное GUI-приложение.439440**неизменяемый**441442Объект с фиксированным значением. К неизменяемым объектам относятся числа, строки и кортежи. Такой объект нельзя изменить. Если требуется сохранить другое значение, необходимо создать новый объект. Они играют важную роль там, где требуется постоянное хеш-значение, например в качестве ключа в словаре.443444**целочисленное деление**445446Математическое деление с отбрасыванием остатка. Например, выражение447448`11/4`449450в настоящее время вычисляется как451452`2`453454в отличие от455456`2.75`457458, возвращаемого делением с плавающей точкой. Также называется459460*целочисленным делением (floor division)*461462. При делении двух целых чисел результатом всегда будет другое целое число (к нему применяется функция floor). Однако если один из операндов имеет другой числовой тип (например,463464[`float`](https://python-all.ru/2.6/library/functions.html#float)465466), результат будет приведён (см.467468[*приведение*](https://python-all.ru/2.6/glossary.html#term-coercion)469470) к общему типу. Например, целое число, разделённое на число с плавающей точкой, даст значение с плавающей точкой, возможно, с десятичной дробью. Целочисленное деление можно принудительно выполнить с помощью оператора471472`//`473474вместо оператора475476`/`477478. См. также479480[*\_\_future\_\_*](https://python-all.ru/2.6/glossary.html#term-future)481482.483484**импортёр**485486Объект, который одновременно находит и загружает модуль; объект, являющийся как487488[*искателем*](https://python-all.ru/2.6/glossary.html#term-finder)489490, так и491492[*загрузчиком*](https://python-all.ru/2.6/glossary.html#term-loader)493494.495496**интерактивный**497498Python включает интерактивный интерпретатор: можно вводить инструкции и выражения в приглашении интерпретатора, сразу же выполнять их и видеть результат. Просто запустите499500`python`501502без аргументов (возможно, выбрав его из главного меню компьютера). Это очень удобный способ опробовать новые идеи или изучить модули и пакеты (вспомните503504`help(x)`505506).507508**интерпретируемый**509510Python является интерпретируемым языком, в отличие от компилируемых, хотя различие может быть размытым из-за наличия компилятора байткода. Это означает, что исходные файлы можно запускать напрямую, без явного создания исполняемого файла, который затем выполняется. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя их программы, как правило, выполняются медленнее. См. также511512[*интерактивный*](https://python-all.ru/2.6/glossary.html#term-interactive)513514.515516**итерируемый объект**517518Объект-контейнер, способный возвращать свои элементы по одному за раз. Примеры итерируемых объектов включают все типы последовательностей (такие как519520[`list`](https://python-all.ru/2.6/library/functions.html#list)521522,523524[`str`](https://python-all.ru/2.6/library/functions.html#str)525526и527528[`tuple`](https://python-all.ru/2.6/library/functions.html#tuple)529530) и некоторые типы, не являющиеся последовательностями, такие как531532[`dict`](https://python-all.ru/2.6/library/stdtypes.html#dict)533534и535536[`file`](https://python-all.ru/2.6/library/functions.html#file)537538, а также объекты любых классов, определённых с методом539540[`__iter__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__iter__)541542или543544[`__getitem__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__getitem__)545546. Итерируемые объекты можно использовать в цикле547548[`for`](https://python-all.ru/2.6/reference/compound_stmts.html#for)549550и во многих других местах, где требуется последовательность (551552[`zip()`](https://python-all.ru/2.6/library/functions.html#zip)553554,555556[`map()`](https://python-all.ru/2.6/library/functions.html#map)557558, ...). Когда итерируемый объект передаётся в качестве аргумента встроенной функции559560[`iter()`](https://python-all.ru/2.6/library/functions.html#iter)561562, она возвращает итератор для этого объекта. Этот итератор предназначен для одного прохода по набору значений. При использовании итерируемых объектов обычно не нужно вызывать563564[`iter()`](https://python-all.ru/2.6/library/functions.html#iter)565566или самостоятельно работать с объектами-итераторами. Оператор567568`for`569570делает это автоматически, создавая временную безымянную переменную для хранения итератора на время выполнения цикла. См. также571572[*iterator*](https://python-all.ru/2.6/glossary.html#term-iterator)573574,575576[*sequence*](https://python-all.ru/2.6/glossary.html#term-sequence)577578и579580[*generator*](https://python-all.ru/2.6/glossary.html#term-generator)581582.583584**итератор**585586Объект, представляющий поток данных. Повторные вызовы метода [`next()`](https://python-all.ru/2.6/library/functions.html#next) итератора возвращают последовательные элементы потока. Когда данные заканчиваются, вместо этого вызывается исключение [`StopIteration`](https://python-all.ru/2.6/library/exceptions.html#exceptions.StopIteration). После этого объект-итератор исчерпан, и любые дальнейшие вызовы его метода [`next()`](https://python-all.ru/2.6/library/functions.html#next) снова вызывают [`StopIteration`](https://python-all.ru/2.6/library/exceptions.html#exceptions.StopIteration). Итераторы должны иметь метод [`__iter__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__iter__), который возвращает сам объект-итератор, так что каждый итератор также является итерируемым и может использоваться в большинстве мест, где принимаются другие итерируемые объекты. Одно заметное исключение – код, который пытается выполнить несколько проходов итерации. Объект-контейнер (например, [`list`](https://python-all.ru/2.6/library/functions.html#list)) создаёт новый свежий итератор каждый раз, когда вы передаёте его функции [`iter()`](https://python-all.ru/2.6/library/functions.html#iter) или используете в цикле [`for`](https://python-all.ru/2.6/reference/compound_stmts.html#for). Попытка сделать то же самое с итератором просто вернёт тот же исчерпанный объект-итератор, который использовался в предыдущем проходе, из-за чего он будет выглядеть как пустой контейнер.587588Дополнительную информацию можно найти в [*Iterator Types*](https://python-all.ru/2.6/library/stdtypes.html#typeiter).589590**именованный аргумент**591592Аргументы, перед которыми в вызове стоит593594`variable_name=`595596. Имя переменной обозначает локальное имя в функции, которому присваивается значение.597598`**`599600используется для принятия или передачи словаря именованных аргументов. См.601602[*аргумент*](https://python-all.ru/2.6/glossary.html#term-argument)603604.605606**лямбда**607608Анонимная встроенная функция, состоящая из одного609610[*выражения*](https://python-all.ru/2.6/glossary.html#term-expression)611612, которое вычисляется при вызове функции. Синтаксис создания лямбда-функции:613614`lambda [аргументы]: выражение`615616**LBYL**617618Сначала подумай, потом делай (Look before you leap). Этот стиль кодирования явно проверяет предусловия перед выполнением вызовов или поиском. Этот стиль противопоставляется подходу619620[*EAFP*](https://python-all.ru/2.6/glossary.html#term-eafp)621622и характеризуется наличием множества инструкций623624[`if`](https://python-all.ru/2.6/reference/compound_stmts.html#if)625626.627628**список**629630Встроенная в Python631632[*последовательность*](https://python-all.ru/2.6/glossary.html#term-sequence)633634. Несмотря на название, она больше похожа на массив в других языках, чем на связный список, поскольку доступ к элементам осуществляется за O(1).635636**генератор списка**637638Компактный способ обработки всех или части элементов последовательности и возврата списка результатов.639640`result = ["0x%02x" % x for x in range(256) if x % 2 == 0]`641642генерирует список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Предложение643644[`if`](https://python-all.ru/2.6/reference/compound_stmts.html#if)645646необязательно. Если оно опущено, обрабатываются все элементы в647648`range(256)`649650.651652**загрузчик**653654Объект, который загружает модуль. Он должен определять метод с именем655656`load_module()`657658. Загрузчик обычно возвращается659660[*искателем (finder)*](https://python-all.ru/2.6/glossary.html#term-finder)661662. Подробнее см.663664[**PEP 302**](https://python-all.ru/2.6/glossary.html)665666.667668**отображение**669670Объект-контейнер (например,671672[`dict`](https://python-all.ru/2.6/library/stdtypes.html#dict)673674), поддерживающий поиск по произвольным ключам с помощью специального метода675676[`__getitem__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__getitem__)677678.679680**метакласс**681682Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за приём этих трёх аргументов и создание класса. Большинство объектно-ориентированных языков программирования предоставляют реализацию по умолчанию. Особенность Python в том, что можно создавать пользовательские метаклассы. Большинству пользователей этот инструмент никогда не понадобится, но когда возникает необходимость, метаклассы могут предоставить мощные и элегантные решения. Они использовались для логирования доступа к атрибутам, добавления потокобезопасности, отслеживания создания объектов, реализации синглтонов и многих других задач.683684Дополнительную информацию можно найти в [*Настройка создания классов*](https://python-all.ru/2.6/reference/datamodel.html#metaclasses).685686**метод**687688Функция, определённая внутри тела класса. Если она вызывается как атрибут экземпляра этого класса, метод получает объект экземпляра в качестве первого689690[*аргумента*](https://python-all.ru/2.6/glossary.html#term-argument)691692(который обычно называется693694`self`695696). См. также697698[*функция*](https://python-all.ru/2.6/glossary.html#term-function)699700и701702[*вложенная область видимости*](https://python-all.ru/2.6/glossary.html#term-nested-scope)703704.705706**изменяемый**707708Изменяемые объекты могут менять своё значение, сохраняя свой709710[`id()`](https://python-all.ru/2.6/library/functions.html#id)711712. См. также713714[*неизменяемый*](https://python-all.ru/2.6/glossary.html#term-immutable)715716.717718**именованный кортеж**719720Любой класс, подобный кортежу, индексируемые элементы которого также доступны через именованные атрибуты (например, [`time.localtime()`](https://python-all.ru/2.6/library/time.html#time.localtime) возвращает подобный кортежу объект, в котором *year* доступен либо по индексу, например `t[0]`, либо через именованный атрибут, например `t.tm_year`).721722Именованный кортеж может быть встроенным типом, например [`time.struct_time`](https://python-all.ru/2.6/library/time.html#time.struct_time), или может быть создан с помощью обычного определения класса. Полнофункциональный именованный кортеж также можно создать с помощью фабричной функции [`collections.namedtuple()`](https://python-all.ru/2.6/library/collections.html#collections.namedtuple). Последний подход автоматически предоставляет дополнительные возможности, такие как самодокументируемое представление, например `Employee(name='jones', title='programmer')`.723724**пространство имён**725726Место, где хранится переменная. Пространства имён реализованы как словари. Существуют локальное, глобальное и встроенное пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён поддерживают модульность, предотвращая конфликты имён. Например, функции727728`__builtin__.open()`729730и731732[`os.open()`](https://python-all.ru/2.6/library/os.html#os.open)733734различаются своими пространствами имён. Пространства имён также помогают читаемости и поддерживаемости, указывая, какой модуль реализует функцию. Например, написание735736[`random.seed()`](https://python-all.ru/2.6/library/random.html#random.seed)737738или739740[`itertools.izip()`](https://python-all.ru/2.6/library/itertools.html#itertools.izip)741742даёт понять, что эти функции реализованы модулями743744[`random`](https://python-all.ru/2.6/library/random.html#module-random)745746и747748[`itertools`](https://python-all.ru/2.6/library/itertools.html#module-itertools)749750соответственно.751752**вложенная область видимости**753754Возможность ссылаться на переменную во внешнем определении. Например, функция, определённая внутри другой функции, может ссылаться на переменные внешней функции. Обратите внимание: вложенные области видимости работают только для чтения, а не для присваивания, которое всегда записывает в самую внутреннюю область. В отличие от этого, локальные переменные и читаются, и записываются в самой внутренней области. Аналогично, глобальные переменные читаются и записываются в глобальном пространстве имён.755756**класс нового стиля**757758Любой класс, который наследуется от [`object`](https://python-all.ru/2.6/library/functions.html#object). Сюда входят все встроенные типы, такие как [`list`](https://python-all.ru/2.6/library/functions.html#list) и [`dict`](https://python-all.ru/2.6/library/stdtypes.html#dict). Только классы нового стиля могут использовать новые универсальные возможности Python, такие как [`__slots__`](https://python-all.ru/2.6/reference/datamodel.html#__slots__), дескрипторы, свойства и [`__getattribute__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__getattribute__).759760Дополнительную информацию можно найти в [*Классы нового и классического стиля*](https://python-all.ru/2.6/reference/datamodel.html#newstyle).761762**объект**763764Любые данные с состоянием (атрибуты или значение) и определённым поведением (методы). Также конечный базовый класс любого765766[*класса нового стиля*](https://python-all.ru/2.6/glossary.html#term-new-style-class)767768.769770**позиционный аргумент**771772Аргументы, присвоенные локальным именам внутри функции или метода, определяемые порядком, в котором они были переданы в вызове.773774`*`775776используется либо для принятия нескольких позиционных аргументов (в определении), либо для передачи нескольких аргументов в виде списка функции. См.777778[*аргумент*](https://python-all.ru/2.6/glossary.html#term-argument)779780.781782**Python 3000**783784Прозвище для следующей крупной версии Python, 3.0 (придуманное давно, когда выпуск версии 3 был чем-то в далёком будущем). Также сокращённо называется «Py3k».785786**Питоничный**787788Идея или фрагмент кода, который тесно следует наиболее распространённым идиомам языка Python, а не использует концепции, общие для других языков. Например, распространённая идиома в Python – перебор всех элементов итерируемого объекта с помощью оператора [`for`](https://python-all.ru/2.6/reference/compound_stmts.html#for). Во многих других языках такой конструкции нет, поэтому люди, не знакомые с Python, иногда используют числовой счётчик:789790```python791for i in range(len(food)):792    print food[i]793```794795В отличие от более чистого, питоничного метода:796797```python798for piece in food:799    print piece800```801802**счётчик ссылок**803804Количество ссылок на объект. Когда счётчик ссылок объекта падает до нуля, он освобождается. Подсчёт ссылок обычно не виден в коде Python, но является ключевым элементом реализации805806[*CPython*](https://python-all.ru/2.6/glossary.html#term-cpython)807808. Модуль809810[`sys`](https://python-all.ru/2.6/library/sys.html#module-sys)811812определяет функцию813814`getrefcount()`815816, которую программисты могут вызывать для получения счётчика ссылок для конкретного объекта.817818**slots**819820Объявление внутри821822[*класса нового стиля*](https://python-all.ru/2.6/glossary.html#term-new-style-class)823824, которое экономит память за счёт предварительного резервирования места для атрибутов экземпляра и устранения словарей экземпляров. Хотя эта техника популярна, её правильное применение несколько затруднительно, и её лучше приберечь для редких случаев, когда имеется большое количество экземпляров в приложении, критичном к памяти.825826**последовательность**827828[*Итерируемый объект*](https://python-all.ru/2.6/glossary.html#term-iterable)829830, который поддерживает эффективный доступ к элементам по целочисленным индексам через специальный метод831832[`__getitem__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__getitem__)833834и определяет метод835836[`len()`](https://python-all.ru/2.6/library/functions.html#len)837838, возвращающий длину последовательности. Некоторые встроенные типы последовательностей:839840[`list`](https://python-all.ru/2.6/library/functions.html#list)841842,843844[`str`](https://python-all.ru/2.6/library/functions.html#str)845846,847848[`tuple`](https://python-all.ru/2.6/library/functions.html#tuple)849850и851852[`unicode`](https://python-all.ru/2.6/library/functions.html#unicode)853854. Обратите внимание, что855856[`dict`](https://python-all.ru/2.6/library/stdtypes.html#dict)857858также поддерживает859860[`__getitem__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__getitem__)861862и863864[`__len__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__len__)865866, но считается отображением, а не последовательностью, поскольку поиск использует произвольные867868[*неизменяемые*](https://python-all.ru/2.6/glossary.html#term-immutable)869870ключи, а не целые числа.871872**срез**873874An object usually containing a portion of a875876[*sequence*](https://python-all.ru/2.6/glossary.html#term-sequence)877878. A slice is created using the subscript notation,879880`[]`881882with colons between numbers when several are given, such as in883884`variable_name[1:3:5]`885886. The bracket (subscript) notation uses887888[`slice`](https://python-all.ru/2.6/library/functions.html#slice)889890objects internally (or in older versions,891892[`__getslice__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__getslice__)893894and895896[`__setslice__()`](https://python-all.ru/2.6/reference/datamodel.html#object.__setslice__)897898).899900**специальный метод**901902A 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 in903904[*Special method names*](https://python-all.ru/2.6/reference/datamodel.html#specialnames)905906.907908**инструкция**909910Инструкция является частью блока кода. Инструкция – это либо911912[*выражение*](https://python-all.ru/2.6/glossary.html#term-expression)913914, либо одна из нескольких конструкций с ключевым словом, например915916[`if`](https://python-all.ru/2.6/reference/compound_stmts.html#if)917918,919920[`while`](https://python-all.ru/2.6/reference/compound_stmts.html#while)921922или923924[`print`](https://python-all.ru/2.6/reference/simple_stmts.html#print)925926.927928**строка в тройных кавычках**929930Строка, ограниченная тремя экземплярами либо кавычек («), либо апострофов ('). Хотя они не предоставляют никаких возможностей, недоступных для строк в одинарных кавычках, они полезны по ряду причин. Они позволяют включать в строку неэкранированные одинарные и двойные кавычки и могут занимать несколько строк без использования символа продолжения, что делает их особенно полезными при написании докстрингов.931932**тип**933934Тип объекта Python определяет, что это за объект; каждый объект имеет тип. Тип объекта доступен как его атрибут935936`__class__`937938или может быть получен с помощью939940`type(obj)`941942.943944**виртуальная машина**945946Компьютер, полностью определённый в программном обеспечении. Виртуальная машина Python выполняет947948[*байт-код*](https://python-all.ru/2.6/glossary.html#term-bytecode)949950, генерируемый компилятором байт-кода.951952**Дзен Python**953954Перечень принципов и философии проектирования Python, полезных для понимания и использования языка. Этот перечень можно получить, введя в интерактивном режиме «955956`import this`957958».959