glossary.md
1> **Источник:** https://python-all.ru/3.4/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.4/library/2to3.html#module-lib2to3); отдельная точка входа предоставляется как `Tools/scripts/2to3`. См. [*2to3 – автоматическое преобразование кода Python 2 в 3*](https://python-all.ru/3.4/library/2to3.html#to3-reference).2223**абстрактный базовый класс**2425Абстрактные базовые классы дополняют2627[https://python-all.ru/3.4/glossary.html#term-duck-typing](https://python-all.ru/3.4/glossary.html#term-duck-typing)2829*утиную типизацию*3031, предоставляя способ определения интерфейсов, когда другие техники, такие как3233[`hasattr()`](https://python-all.ru/3.4/library/functions.html#hasattr)3435, были бы неуклюжими или не совсем корректными (например, с3637[*магическими методами*](https://python-all.ru/3.4/reference/datamodel.html#special-lookup)3839). ABC вводят виртуальные подклассы – классы, которые не наследуются от класса, но всё равно распознаются4041[`isinstance()`](https://python-all.ru/3.4/library/functions.html#isinstance)4243и4445[`issubclass()`](https://python-all.ru/3.4/library/functions.html#issubclass)4647; см. документацию модуля4849[`abc`](https://python-all.ru/3.4/library/abc.html#module-abc)5051. Python поставляется со многими встроенными ABC для структур данных (модуль5253[`collections.abc`](https://python-all.ru/3.4/library/collections.abc.html#module-collections.abc)5455), чисел (модуль5657[`numbers`](https://python-all.ru/3.4/library/numbers.html#module-numbers)5859), потоков данных (модуль6061[`io`](https://python-all.ru/3.4/library/io.html#module-io)6263), искателей и загрузчиков импорта (модуль6465[`importlib.abc`](https://python-all.ru/3.4/library/importlib.html#module-importlib.abc)6667). Вы можете создавать собственные ABC с помощью модуля6869[`abc`](https://python-all.ru/3.4/library/abc.html#module-abc)7071.7273**аргумент**7475Значение, передаваемое [*функции*](https://python-all.ru/3.4/glossary.html#term-function) (или [*методу*](https://python-all.ru/3.4/glossary.html#term-method)) при вызове функции. Существует два вида аргументов:7677- *Именованный аргумент*: аргумент, перед которым стоит идентификатор (например, `name=`) в вызове функции или переданный как значение в словаре, перед которым стоит `**`. Например, `3` и `5` являются именованными аргументами в следующих вызовах [`complex()`](https://python-all.ru/3.4/library/functions.html#complex):7879 ```python80 complex(real=3, imag=5)81 complex(**{'real': 3, 'imag': 5})82 ```83- *позиционный аргумент*: аргумент, не являющийся именованным. Позиционные аргументы могут находиться в начале списка аргументов и/или передаваться как элементы [*итерируемого объекта*](https://python-all.ru/3.4/glossary.html#term-iterable) перед `*`. Например, `3` и `5` оба являются позиционными аргументами в следующих вызовах:8485 ```python86 complex(3, 5)87 complex(*(3, 5))88 ```8990Аргументы присваиваются именованным локальным переменным в теле функции. См. раздел [*Вызовы*](https://python-all.ru/3.4/reference/expressions.html#calls) для правил, регулирующих это присваивание. Синтаксически для представления аргумента можно использовать любое выражение; вычисленное значение присваивается локальной переменной.9192См. также запись глоссария [*параметр*](https://python-all.ru/3.4/glossary.html#term-parameter), вопрос FAQ о [*различии между аргументами и параметрами*](https://python-all.ru/3.4/faq/programming.html#faq-argument-vs-parameter), и [**PEP 362**](https://python-all.ru/3.4/glossary.html).9394**атрибут**9596Значение, связанное с объектом, на которое ссылаются по имени с помощью выражений с точкой. Например, если объект9798*o*99100имеет атрибут101102*a*103104, на него можно сослаться как105106*o.a*107108.109110**BDFL**111112Доброжелательный диктатор на всю жизнь, также известный как113114[Гвидо ван Россум](https://python-all.ru/3.4/glossary.html)115116, создатель Python.117118**двоичный файл**119120[*Файловый объект*](https://python-all.ru/3.4/glossary.html#term-file-object), способный читать и записывать [*байтоподобные объекты*](https://python-all.ru/3.4/glossary.html#term-bytes-like-object).121122> **См. также**123>124> [*Текстовый файл*](https://python-all.ru/3.4/glossary.html#term-text-file) читает и записывает [`str`](https://python-all.ru/3.4/library/stdtypes.html#str) объекты.125126**байтоподобный объект**127128Объект, поддерживающий129130[*буферный протокол*](https://python-all.ru/3.4/c-api/buffer.html#bufferobjects)131132, например133134[`bytes`](https://python-all.ru/3.4/library/functions.html#bytes)135136,137138[`bytearray`](https://python-all.ru/3.4/library/functions.html#bytearray)139140или141142[`memoryview`](https://python-all.ru/3.4/library/stdtypes.html#memoryview)143144. Байтоподобные объекты могут использоваться в различных операциях, которые ожидают двоичные данные, таких как сжатие, сохранение в двоичный файл или отправка через сокет. Некоторые операции требуют, чтобы двоичные данные были изменяемыми, и в этом случае не все байтоподобные объекты подходят.145146**байткод**147148Исходный код Python компилируется в байт-код – внутреннее представление программы на Python в интерпретаторе CPython. Байт-код также кэшируется в файлах `.pyc` и `.pyo`, чтобы повторное выполнение того же файла было быстрее (перекомпиляцию из исходного кода в байт-код можно избежать). Этот «промежуточный язык» выполняется на [*виртуальной машине*](https://python-all.ru/3.4/glossary.html#term-virtual-machine), которая исполняет машинный код, соответствующий каждому байт-коду. Обратите внимание, что байт-коды не должны работать между разными виртуальными машинами Python, ни быть стабильными между версиями Python.149150Список инструкций байткода можно найти в документации [*модуля dis*](https://python-all.ru/3.4/library/dis.html#bytecodes).151152**класс**153154Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.155156**приведение типов**157158Неявное преобразование экземпляра одного типа в другой во время операции, включающей два аргумента одного типа. Например,159160`int(3.15)`161162преобразует число с плавающей запятой в целое число163164`3`165166, но в167168`3+4.5`169170каждый аргумент имеет разный тип (один int, другой float), и оба должны быть преобразованы в один и тот же тип, прежде чем их можно будет сложить, иначе будет возбуждено171172`TypeError`173174. Без приведения типов программисту пришлось бы нормализовать все аргументы, даже совместимых типов, до одного значения, например175176`float(3)+4.5`177178, а не просто179180`3+4.5`181182.183184**комплексное число**185186Расширение привычной системы действительных чисел, в котором все числа выражаются как сумма действительной и мнимой части. Мнимые числа – это действительные кратные мнимой единицы (квадратный корень из187188`-1`189190), часто записываемой как191192`i`193194в математике или195196`j`197198в технике. Python имеет встроенную поддержку комплексных чисел, которые записываются в последнем обозначении; мнимая часть записывается с суффиксом199200`j`201202, например,203204`3+1j`205206. Для доступа к комплексным аналогам модуля207208[`math`](https://python-all.ru/3.4/library/math.html#module-math)209210используйте211212[`cmath`](https://python-all.ru/3.4/library/cmath.html#module-cmath)213214. Использование комплексных чисел – довольно продвинутая математическая возможность. Если вы не осознаёте необходимости в них, почти наверняка их можно безопасно игнорировать.215216**контекстный менеджер**217218Объект, который управляет окружением, видимым в операторе219220[`with`](https://python-all.ru/3.4/reference/compound_stmts.html#with)221222, определяя методы223224[`__enter__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__enter__)225226и227228[`__exit__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__exit__)229230. См.231232[**PEP 343**](https://python-all.ru/3.4/glossary.html)233234.235236**CPython**237238Каноническая реализация языка программирования Python, распространяемая на239240[python.org](https://python-all.ru/3.4/glossary.html)241242. Термин «CPython» используется, когда необходимо отличить эту реализацию от других, таких как Jython или IronPython.243244**декоратор**245246Функция, возвращающая другую функцию, обычно применяемая как преобразование функции с использованием синтаксиса `@wrapper`. Распространённые примеры декораторов: [`classmethod()`](https://python-all.ru/3.4/library/functions.html#classmethod) и [`staticmethod()`](https://python-all.ru/3.4/library/functions.html#staticmethod).247248Синтаксис декоратора – всего лишь синтаксический сахар, следующие два определения функций семантически эквивалентны:249250```python251def f(...):252 ...253f = staticmethod(f)254255@staticmethod256def f(...):257 ...258```259260Та же концепция существует и для классов, но там используется реже. См. документацию по [*определениям функций*](https://python-all.ru/3.4/reference/compound_stmts.html#function) и [*определениям классов*](https://python-all.ru/3.4/reference/compound_stmts.html#class) для получения дополнительной информации о декораторах.261262**дескриптор**263264Любой объект, который определяет методы [`__get__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__get__), [`__set__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__set__) или [`__delete__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__delete__). Когда атрибут класса является дескриптором, его специальное поведение связывания срабатывает при поиске атрибута. Обычно использование *a.b* для получения, установки или удаления атрибута ищет объект с именем *b* в словаре класса для *a*, но если *b* является дескриптором, вызывается соответствующий метод дескриптора. Понимание дескрипторов – ключ к глубокому пониманию Python, потому что они являются основой многих возможностей, включая функции, методы, свойства, методы класса, статические методы и ссылки на суперклассы.265266Подробнее о методах дескрипторов см. в [*Implementing Descriptors*](https://python-all.ru/3.4/reference/datamodel.html#descriptors).267268**словарь**269270Ассоциативный массив, в котором произвольные ключи сопоставляются значениям. Ключами могут быть любые объекты с методами271272[`__hash__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__hash__)273274и275276[`__eq__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__eq__)277278. В Perl называется хешем.279280**представление словаря**281282Объекты, возвращаемые283284[`dict.keys()`](https://python-all.ru/3.4/library/stdtypes.html#dict.keys)285286,287288[`dict.values()`](https://python-all.ru/3.4/library/stdtypes.html#dict.values)289290и291292[`dict.items()`](https://python-all.ru/3.4/library/stdtypes.html#dict.items)293294, называются представлениями словаря. Они предоставляют динамическое представление записей словаря, то есть при изменении словаря представление отражает эти изменения. Чтобы принудительно преобразовать представление словаря в полноценный список, используйте295296`list(dictview)`297298. См.299300[*Объекты представлений словаря*](https://python-all.ru/3.4/library/stdtypes.html#dict-views)301302.303304**докстринг**305306Строковый литерал, который появляется как первое выражение в классе, функции или модуле. Хотя он игнорируется при выполнении блока, он распознаётся компилятором и помещается в атрибут307308`__doc__`309310окружающего класса, функции или модуля. Поскольку он доступен через интроспекцию, это каноническое место для документации объекта.311312**утиная типизация**313314Стиль программирования, который не смотрит на тип объекта, чтобы определить, есть ли у него нужный интерфейс; вместо этого метод или атрибут просто вызывается или используется («Если это выглядит как утка и крякает как утка, значит, это утка»). Делая упор на интерфейсы, а не на конкретные типы, хорошо спроектированный код повышает свою гибкость, допуская полиморфную подстановку. Утиная типизация избегает проверок с помощью315316[`type()`](https://python-all.ru/3.4/library/functions.html#type)317318или319320[`isinstance()`](https://python-all.ru/3.4/library/functions.html#isinstance)321322. (Однако обратите внимание, что утиную типизацию можно дополнить323324[*абстрактными базовыми классами*](https://python-all.ru/3.4/glossary.html#term-abstract-base-class)325326.) Вместо этого она обычно использует проверки327328[`hasattr()`](https://python-all.ru/3.4/library/functions.html#hasattr)329330или программирование в стиле331332[*EAFP*](https://python-all.ru/3.4/glossary.html#term-eafp)333334.335336**EAFP**337338Проще попросить прощения, чем разрешения. Этот распространённый стиль программирования на Python предполагает существование правильных ключей или атрибутов и перехватывает исключения, если предположение оказывается неверным. Этот чистый и быстрый стиль характеризуется наличием множества операторов339340[`try`](https://python-all.ru/3.4/reference/compound_stmts.html#try)341342и343344[`except`](https://python-all.ru/3.4/reference/compound_stmts.html#except)345346. Этот подход контрастирует со стилем347348[*LBYL*](https://python-all.ru/3.4/glossary.html#term-lbyl)349350, распространённым во многих других языках, таких как C.351352**выражение**353354Синтаксическая конструкция, которая может быть вычислена в некоторое значение. Другими словами, выражение – это совокупность элементов выражения, таких как литералы, имена, доступ к атрибутам, операторы или вызовы функций, которые возвращают значение. В отличие от многих других языков, не все языковые конструкции являются выражениями. Существуют также355356[*инструкции*](https://python-all.ru/3.4/glossary.html#term-statement)357358, которые нельзя использовать как выражения, например359360[`if`](https://python-all.ru/3.4/reference/compound_stmts.html#if)361362. Присваивания также являются инструкциями, а не выражениями.363364**модуль-расширение**365366Модуль, написанный на C или C++, использующий C API Python для взаимодействия с ядром и пользовательским кодом.367368**файловый объект**369370Объект, предоставляющий файлово-ориентированный API (с методами, такими как `read()` или `write()`) для нижележащего ресурса. В зависимости от способа создания файловый объект может обеспечить доступ к реальному файлу на диске или к другому типу хранилища или коммуникационного устройства (например, стандартный ввод/вывод, буферы в памяти, сокеты, каналы и т.д.). Файловые объекты также называются *файлоподобными объектами* или *потоками данных*.371372На самом деле существует три категории файловых объектов: необработанные [*двоичные файлы*](https://python-all.ru/3.4/glossary.html#term-binary-file), буферизованные [*двоичные файлы*](https://python-all.ru/3.4/glossary.html#term-binary-file) и [*текстовые файлы*](https://python-all.ru/3.4/glossary.html#term-text-file). Их интерфейсы определены в модуле [`io`](https://python-all.ru/3.4/library/io.html#module-io). Канонический способ создания файлового объекта – использование функции [`open()`](https://python-all.ru/3.4/library/functions.html#open).373374**файлоподобный объект**375376Синоним для377378[*файлового объекта*](https://python-all.ru/3.4/glossary.html#term-file-object)379380.381382**искатель**383384Объект, который пытается найти385386[*загрузчик*](https://python-all.ru/3.4/glossary.html#term-loader)387388для модуля. Он должен реализовывать либо метод с именем389390`find_loader()`391392, либо метод с именем393394`find_module()`395396. См.397398[**PEP 302**](https://python-all.ru/3.4/glossary.html)399400и401402[**PEP 420**](https://python-all.ru/3.4/glossary.html)403404для подробностей и405406[`importlib.abc.Finder`](https://python-all.ru/3.4/library/importlib.html#importlib.abc.Finder)407408для409410[*абстрактного базового класса*](https://python-all.ru/3.4/glossary.html#term-abstract-base-class)411412.413414**целочисленное деление**415416Математическое деление, округляющее результат до ближайшего целого вниз. Оператор деления с округлением вниз –417418`//`419420. Например, выражение421422`11 // 4`423424вычисляется в425426`2`427428в отличие от429430`2.75`431432, возвращаемого при истинном делении с плавающей запятой. Обратите внимание, что433434`(-11) // 4`435436равно437438`-3`439440, потому что это441442`-2.75`443444, округлённое445446*вниз*447448. См.449450[**PEP 238**](https://python-all.ru/3.4/glossary.html)451452.453454**функция**455456Последовательность инструкций, которая возвращает некоторое значение вызывающему коду. В неё также можно передать ноль или более457458[*аргументов*](https://python-all.ru/3.4/glossary.html#term-argument)459460, которые могут использоваться при выполнении тела. См. также461462[*параметр*](https://python-all.ru/3.4/glossary.html#term-parameter)463464,465466[*метод*](https://python-all.ru/3.4/glossary.html#term-method)467468, и раздел469470[*Определения функций*](https://python-all.ru/3.4/reference/compound_stmts.html#function)471472.473474**аннотация функции**475476Произвольное метаданное значение, связанное с параметром функции или возвращаемым значением. Его синтаксис описан в разделе [*Определения функций*](https://python-all.ru/3.4/reference/compound_stmts.html#function). Аннотации могут быть получены через специальный атрибут `__annotations__` объекта функции.477478Сам Python не придаёт никакого особого значения аннотациям функций. Они предназначены для интерпретации сторонними библиотеками или инструментами. См. [**PEP 3107**](https://python-all.ru/3.4/glossary.html), где описаны некоторые из их возможных применений.479480**future**481482Псевдомодуль, с помощью которого программисты могут включать новые возможности языка, несовместимые с текущим интерпретатором.483484Импортировав модуль [`__future__`](https://python-all.ru/3.4/library/__future__.html#module-__future__) и вычислив его переменные, можно увидеть, когда новая возможность была впервые добавлена в язык и когда она стала поведением по умолчанию:485486```python487>>> import __future__488>>> __future__.division489_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)490```491492**сборка мусора**493494Процесс освобождения памяти, когда она больше не используется. Python выполняет сборку мусора с помощью подсчёта ссылок и циклического сборщика мусора, который способен обнаруживать и разрывать циклические ссылки.495496**генератор**497498Функция, которая возвращает итератор. Она выглядит как обычная функция, за исключением того, что содержит операторы499500[`yield`](https://python-all.ru/3.4/reference/simple_stmts.html#yield)501502для создания последовательности значений, которые можно использовать в цикле for или получать по одному с помощью функции503504[`next()`](https://python-all.ru/3.4/library/functions.html#next)505506. Каждый507508[`yield`](https://python-all.ru/3.4/reference/simple_stmts.html#yield)509510временно приостанавливает обработку, запоминая состояние выполнения (включая локальные переменные и ожидающие операторы try). Когда генератор возобновляется, он продолжает с того места, где остановился (в отличие от функций, которые начинают заново при каждом вызове).511512**генераторное выражение**513514Выражение, которое возвращает итератор. Оно выглядит как обычное выражение, за которым следует выражение [`for`](https://python-all.ru/3.4/reference/compound_stmts.html#for), определяющее переменную цикла, диапазон и необязательное выражение [`if`](https://python-all.ru/3.4/reference/compound_stmts.html#if). Комбинированное выражение генерирует значения для внешней функции:515516```python517>>> sum(i*i for i in range(10)) # сумма квадратов 0, 1, 4, ... 81518285519```520521**обобщённая функция**522523Функция, состоящая из нескольких функций, реализующих одну и ту же операцию для разных типов. Какая реализация должна использоваться при вызове, определяется алгоритмом диспетчеризации.524525См. также запись глоссария [*одиночная диспетчеризация*](https://python-all.ru/3.4/glossary.html#term-single-dispatch), декоратор [`functools.singledispatch()`](https://python-all.ru/3.4/library/functools.html#functools.singledispatch) и [**PEP 443**](https://python-all.ru/3.4/glossary.html).526527**GIL**528529См.530531[*глобальная блокировка интерпретатора*](https://python-all.ru/3.4/glossary.html#term-global-interpreter-lock)532533.534535**глобальная блокировка интерпретатора**536537Механизм, используемый интерпретатором [*CPython*](https://python-all.ru/3.4/glossary.html#term-cpython), чтобы гарантировать, что только один поток выполняет [*байткод Python*](https://python-all.ru/3.4/glossary.html#term-bytecode) в один момент времени. Это упрощает реализацию CPython, делая объектную модель (включая критически важные встроенные типы, такие как [`dict`](https://python-all.ru/3.4/library/stdtypes.html#dict)) неявно безопасной для конкурентного доступа. Блокировка всего интерпретатора облегчает его многопоточность, но ценой потери большей части параллелизма, который могли бы дать многопроцессорные машины.538539Однако некоторые расширяющие модули, как стандартные, так и сторонние, спроектированы так, чтобы освобождать GIL при выполнении вычислительно интенсивных задач, таких как сжатие или хеширование. Кроме того, GIL всегда освобождается при выполнении операций ввода-вывода.540541Прежние попытки создать «свободно-поточный» интерпретатор (тот, который блокирует общие данные с гораздо более мелкой гранулярностью) не увенчались успехом, потому что производительность страдала в типичном случае с одним процессором. Считается, что преодоление этой проблемы производительности сделало бы реализацию гораздо более сложной и, следовательно, более дорогой в сопровождении.542543**хешируемый**544545Объект является *хэшируемым*, если у него есть хэш-значение, которое никогда не меняется в течение его жизни (нужен метод [`__hash__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__hash__)), и его можно сравнивать с другими объектами (нужен метод [`__eq__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__eq__)). Хэшируемые объекты, которые сравниваются как равные, должны иметь одинаковое хэш-значение.546547Хешируемость позволяет использовать объект в качестве ключа словаря и элемента множества, поскольку эти структуры данных внутренне используют хеш-значение.548549Все неизменяемые встроенные объекты Python хэшируемы, в то время как изменяемые контейнеры (например, списки или словари) – нет. Объекты, которые являются экземплярами пользовательских классов, по умолчанию хэшируемы; все они сравниваются как неравные (кроме сравнения с собой), и их хэш-значение производно от их [`id()`](https://python-all.ru/3.4/library/functions.html#id).550551**IDLE**552553Интегрированная среда разработки для Python. IDLE – это базовый редактор и среда интерпретатора, которая поставляется со стандартной дистрибуцией Python.554555**неизменяемый**556557Объект с фиксированным значением. К неизменяемым объектам относятся числа, строки и кортежи. Такой объект нельзя изменить. Если требуется сохранить другое значение, необходимо создать новый объект. Они играют важную роль там, где требуется постоянное хеш-значение, например в качестве ключа в словаре.558559**путь импорта**560561Список расположений (или562563[*записей путей*](https://python-all.ru/3.4/glossary.html#term-path-entry)564565), которые просматриваются566567[*искателем на основе путей*](https://python-all.ru/3.4/glossary.html#term-path-based-finder)568569в поисках модулей для импорта. Во время импорта этот список расположений обычно берётся из570571[`sys.path`](https://python-all.ru/3.4/library/sys.html#sys.path)572573, но для вложенных пакетов он также может браться из атрибута574575`__path__`576577родительского пакета.578579**импортирование**580581Процесс, благодаря которому код Python в одном модуле становится доступным коду Python в другом модуле.582583**импортёр**584585Объект, который одновременно находит и загружает модуль; объект, являющийся как586587[*искателем*](https://python-all.ru/3.4/glossary.html#term-finder)588589, так и590591[*загрузчиком*](https://python-all.ru/3.4/glossary.html#term-loader)592593.594595**интерактивный**596597Python включает интерактивный интерпретатор: можно вводить инструкции и выражения в приглашении интерпретатора, сразу же выполнять их и видеть результат. Просто запустите598599`python`600601без аргументов (возможно, выбрав его из главного меню компьютера). Это очень удобный способ опробовать новые идеи или изучить модули и пакеты (вспомните602603`help(x)`604605).606607**интерпретируемый**608609Python является интерпретируемым языком, в отличие от компилируемых, хотя различие может быть размытым из-за наличия компилятора байткода. Это означает, что исходные файлы можно запускать напрямую, без явного создания исполняемого файла, который затем выполняется. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя их программы, как правило, выполняются медленнее. См. также610611[*интерактивный*](https://python-all.ru/3.4/glossary.html#term-interactive)612613.614615**итерируемый объект**616617Объект, способный возвращать свои элементы по одному. Примеры итерируемых объектов включают все последовательности (такие как618619[`list`](https://python-all.ru/3.4/library/stdtypes.html#list)620621,622623[`str`](https://python-all.ru/3.4/library/stdtypes.html#str)624625, и626627[`tuple`](https://python-all.ru/3.4/library/stdtypes.html#tuple)628629), а также некоторые непоследовательные типы, например630631[`dict`](https://python-all.ru/3.4/library/stdtypes.html#dict)632633,634635[*файловые объекты*](https://python-all.ru/3.4/glossary.html#term-file-object)636637и объекты любых классов, для которых вы определили методы638639[`__iter__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__iter__)640641или642643[`__getitem__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__getitem__)644645. Итерируемые объекты можно использовать в цикле646647[`for`](https://python-all.ru/3.4/reference/compound_stmts.html#for)648649и во многих других местах, где требуется последовательность (650651[`zip()`](https://python-all.ru/3.4/library/functions.html#zip)652653,654655[`map()`](https://python-all.ru/3.4/library/functions.html#map)656657, ...). Когда итерируемый объект передаётся в качестве аргумента встроенной функции658659[`iter()`](https://python-all.ru/3.4/library/functions.html#iter)660661, она возвращает итератор для этого объекта. Этот итератор годится для одного прохода по набору значений. При работе с итерируемыми объектами обычно не требуется вызывать662663[`iter()`](https://python-all.ru/3.4/library/functions.html#iter)664665или самостоятельно работать с объектами итераторов. Инструкция666667`for`668669делает это автоматически, создавая временную безымянную переменную для хранения итератора на время цикла. См. также670671[*итератор*](https://python-all.ru/3.4/glossary.html#term-iterator)672673,674675[*последовательность*](https://python-all.ru/3.4/glossary.html#term-sequence)676677и678679[*генератор*](https://python-all.ru/3.4/glossary.html#term-generator)680681.682683**итератор**684685Объект, представляющий поток данных. Повторные вызовы метода [`__next__()`](https://python-all.ru/3.4/library/stdtypes.html#iterator.__next__) итератора (или передача его встроенной функции [`next()`](https://python-all.ru/3.4/library/functions.html#next)) возвращают последовательные элементы потока. Когда данные заканчиваются, вместо них возбуждается исключение [`StopIteration`](https://python-all.ru/3.4/library/exceptions.html#StopIteration). После этого итератор считается исчерпанным, и любые дальнейшие вызовы его метода `__next__()` будут снова возбуждать [`StopIteration`](https://python-all.ru/3.4/library/exceptions.html#StopIteration). Итераторы должны иметь метод [`__iter__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__iter__), который возвращает сам объект итератора, так что каждый итератор также является итерируемым объектом и может использоваться в большинстве мест, где принимаются другие итерируемые объекты. Одним заметным исключением является код, пытающийся выполнить несколько проходов по итерации. Объект-контейнер (например, [`list`](https://python-all.ru/3.4/library/stdtypes.html#list)) создаёт новый свежий итератор каждый раз, когда вы передаёте его функции [`iter()`](https://python-all.ru/3.4/library/functions.html#iter) или используете в цикле [`for`](https://python-all.ru/3.4/reference/compound_stmts.html#for). Попытка сделать то же самое с итератором просто вернёт тот же самый исчерпанный итератор, который использовался в предыдущем проходе, из-за чего он будет выглядеть как пустой контейнер.686687Дополнительную информацию можно найти в [*Iterator Types*](https://python-all.ru/3.4/library/stdtypes.html#typeiter).688689**функция ключа**690691Ключевая функция (или функция сравнения) – это вызываемый объект, возвращающий значение, используемое для сортировки или упорядочивания. Например, [`locale.strxfrm()`](https://python-all.ru/3.4/library/locale.html#locale.strxfrm) используется для получения ключа сортировки, учитывающего правила сортировки, зависящие от локали.692693Ряд инструментов в Python принимают ключевые функции для управления тем, как элементы упорядочиваются или группируются. К ним относятся [`min()`](https://python-all.ru/3.4/library/functions.html#min), [`max()`](https://python-all.ru/3.4/library/functions.html#max), [`sorted()`](https://python-all.ru/3.4/library/functions.html#sorted), [`list.sort()`](https://python-all.ru/3.4/library/stdtypes.html#list.sort), [`heapq.nsmallest()`](https://python-all.ru/3.4/library/heapq.html#heapq.nsmallest), [`heapq.nlargest()`](https://python-all.ru/3.4/library/heapq.html#heapq.nlargest) и [`itertools.groupby()`](https://python-all.ru/3.4/library/itertools.html#itertools.groupby).694695Существует несколько способов создания ключевой функции. Например, метод [`str.lower()`](https://python-all.ru/3.4/library/stdtypes.html#str.lower) может служить ключевой функцией для сортировки без учёта регистра. Кроме того, специальную ключевую функцию можно построить из [`lambda`](https://python-all.ru/3.4/reference/expressions.html#lambda)-выражения, например `lambda r: (r[0], r[2])`. Также модуль [`operator`](https://python-all.ru/3.4/library/operator.html#module-operator) предоставляет три конструктора ключевых функций: [`attrgetter()`](https://python-all.ru/3.4/library/operator.html#operator.attrgetter), [`itemgetter()`](https://python-all.ru/3.4/library/operator.html#operator.itemgetter) и [`methodcaller()`](https://python-all.ru/3.4/library/operator.html#operator.methodcaller). См. [*Руководство по сортировке*](https://python-all.ru/3.4/howto/sorting.html#sortinghowto) с примерами создания и использования ключевых функций.696697**именованный аргумент**698699См.700701[*аргумент*](https://python-all.ru/3.4/glossary.html#term-argument)702703.704705**lambda**706707Анонимная встроенная функция, состоящая из одного708709[*выражения*](https://python-all.ru/3.4/glossary.html#term-expression)710711, которое вычисляется при вызове функции. Синтаксис создания лямбда-функции:712713`lambda [аргументы]: выражение`714715**LBYL**716717Сначала подумай, потом делай (Look before you leap). Этот стиль кодирования явно проверяет предусловия перед выполнением вызовов или поиском. Этот стиль противопоставляется подходу [*EAFP*](https://python-all.ru/3.4/glossary.html#term-eafp) и характеризуется наличием множества инструкций [`if`](https://python-all.ru/3.4/reference/compound_stmts.html#if).718719В многопоточной среде подход LBYL может привести к состоянию гонки между «проверкой» и «действием». Например, код `if key in mapping: return mapping[key]` может не сработать, если другой поток удалит *key* из *mapping* после проверки, но до поиска. Проблему можно решить с помощью блокировок или используя подход EAFP.720721**list**722723Встроенная в Python724725[*последовательность*](https://python-all.ru/3.4/glossary.html#term-sequence)726727. Несмотря на название, она больше похожа на массив в других языках, чем на связный список, поскольку доступ к элементам осуществляется за O(1).728729**генератор списка**730731Компактный способ обработать все или часть элементов последовательности и вернуть список с результатами.732733`result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]`734735генерирует список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Часть736737[`if`](https://python-all.ru/3.4/reference/compound_stmts.html#if)738739необязательна. Если её опустить, обрабатываются все элементы из740741`range(256)`742743.744745**загрузчик**746747Объект, который загружает модуль. Должен определять метод748749`load_module()`750751. Загрузчик обычно возвращается752753[*искателем*](https://python-all.ru/3.4/glossary.html#term-finder)754755. Подробнее см.756757[**PEP 302**](https://python-all.ru/3.4/glossary.html)758759и760761[`importlib.abc.Loader`](https://python-all.ru/3.4/library/importlib.html#importlib.abc.Loader)762763в качестве764765[*абстрактного базового класса*](https://python-all.ru/3.4/glossary.html#term-abstract-base-class)766767.768769**отображение**770771Объект-контейнер, поддерживающий произвольный поиск по ключу и реализующий методы, указанные в772773[`Mapping`](https://python-all.ru/3.4/library/collections.abc.html#collections.abc.Mapping)774775или776777[`MutableMapping`](https://python-all.ru/3.4/library/collections.abc.html#collections.abc.MutableMapping)778779[*абстрактных базовых классах*](https://python-all.ru/3.4/library/collections.abc.html#collections-abstract-base-classes)780781. Примеры включают782783[`dict`](https://python-all.ru/3.4/library/stdtypes.html#dict)784785,786787[`collections.defaultdict`](https://python-all.ru/3.4/library/collections.html#collections.defaultdict)788789,790791[`collections.OrderedDict`](https://python-all.ru/3.4/library/collections.html#collections.OrderedDict)792793и794795[`collections.Counter`](https://python-all.ru/3.4/library/collections.html#collections.Counter)796797.798799**искатель мета-пути**800801Искатель, возвращаемый при поиске по802803[`sys.meta_path`](https://python-all.ru/3.4/library/sys.html#sys.meta_path)804805. Мета-искатели связаны с806807[*искателями записей путей*](https://python-all.ru/3.4/glossary.html#term-path-entry-finder)808809, но отличаются от них.810811**метакласс**812813Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за приём этих трёх аргументов и создание класса. Большинство объектно-ориентированных языков программирования предоставляют реализацию по умолчанию. Особенность Python в том, что можно создавать пользовательские метаклассы. Большинству пользователей этот инструмент никогда не понадобится, но когда возникает необходимость, метаклассы могут предоставить мощные и элегантные решения. Они использовались для логирования доступа к атрибутам, добавления потокобезопасности, отслеживания создания объектов, реализации синглтонов и многих других задач.814815Дополнительную информацию можно найти в [*Настройка создания классов*](https://python-all.ru/3.4/reference/datamodel.html#metaclasses).816817**метод**818819Функция, определённая внутри тела класса. Если она вызывается как атрибут экземпляра этого класса, метод получает объект экземпляра в качестве первого820821[*аргумента*](https://python-all.ru/3.4/glossary.html#term-argument)822823(который обычно называется824825`self`826827). См. также828829[*функция*](https://python-all.ru/3.4/glossary.html#term-function)830831и832833[*вложенная область видимости*](https://python-all.ru/3.4/glossary.html#term-nested-scope)834835.836837**порядок разрешения методов**838839Порядок разрешения методов (Method Resolution Order) – это порядок, в котором базовые классы просматриваются при поиске члена класса. См.840841[The Python 2.3 Method Resolution Order](https://python-all.ru/3.4/glossary.html)842843.844845**модуль**846847Объект, служащий организационной единицей кода Python. Модули имеют пространство имён, содержащее произвольные объекты Python. Модули загружаются в Python в процессе [*импортирования*](https://python-all.ru/3.4/glossary.html#term-importing).848849См. также [*пакет*](https://python-all.ru/3.4/glossary.html#term-package).850851**спецификация модуля**852853Пространство имён, содержащее информацию, связанную с импортом, используемую для загрузки модуля.854855**MRO**856857См.858859[*порядок разрешения методов*](https://python-all.ru/3.4/glossary.html#term-method-resolution-order)860861.862863**изменяемый**864865Изменяемые объекты могут менять своё значение, сохраняя свой866867[`id()`](https://python-all.ru/3.4/library/functions.html#id)868869. См. также870871[*неизменяемый*](https://python-all.ru/3.4/glossary.html#term-immutable)872873.874875**именованный кортеж**876877Любой класс, подобный кортежу, индексируемые элементы которого также доступны через именованные атрибуты (например, [`time.localtime()`](https://python-all.ru/3.4/library/time.html#time.localtime) возвращает подобный кортежу объект, в котором *year* доступен либо по индексу, например `t[0]`, либо через именованный атрибут, например `t.tm_year`).878879Именованный кортеж может быть встроенным типом, например [`time.struct_time`](https://python-all.ru/3.4/library/time.html#time.struct_time), или может быть создан с помощью обычного определения класса. Полнофункциональный именованный кортеж также можно создать с помощью фабричной функции [`collections.namedtuple()`](https://python-all.ru/3.4/library/collections.html#collections.namedtuple). Последний подход автоматически предоставляет дополнительные возможности, такие как самодокументируемое представление, например `Employee(name='jones', title='programmer')`.880881**пространство имён**882883Место, где хранится переменная. Пространства имён реализованы в виде словарей. Существуют локальное, глобальное и встроенное пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён обеспечивают модульность, предотвращая конфликты имён. Например, функции884885[`builtins.open`](https://python-all.ru/3.4/library/functions.html#open)886887и888889[`os.open()`](https://python-all.ru/3.4/library/os.html#os.open)890891различаются своими пространствами имён. Пространства имён также повышают читаемость и сопровождаемость, поскольку показывают, какой модуль реализует функцию. Например, запись892893[`random.seed()`](https://python-all.ru/3.4/library/random.html#random.seed)894895или896897[`itertools.islice()`](https://python-all.ru/3.4/library/itertools.html#itertools.islice)898899ясно указывает, что эти функции реализованы соответственно в модулях900901[`random`](https://python-all.ru/3.4/library/random.html#module-random)902903и904905[`itertools`](https://python-all.ru/3.4/library/itertools.html#module-itertools)906907.908909**пакет пространства имён**910911A [**PEP 420**](https://python-all.ru/3.4/glossary.html) [*package*](https://python-all.ru/3.4/glossary.html#term-package) which serves only as a container for subpackages. Namespace packages may have no physical representation, and specifically are not like a [*regular package*](https://python-all.ru/3.4/glossary.html#term-regular-package) because they have no `__init__.py` file.912913См. также [*модуль*](https://python-all.ru/3.4/glossary.html#term-module).914915**вложенная область видимости**916917Возможность ссылаться на переменную из внешнего определения. Например, функция, определённая внутри другой функции, может обращаться к переменным внешней функции. Обратите внимание, что по умолчанию вложенные области видимости работают только для чтения, но не для присваивания. Локальные переменные читаются и записываются в самой внутренней области. Аналогично, глобальные переменные читаются и записываются в глобальном пространстве имён. Ключевое слово918919[`nonlocal`](https://python-all.ru/3.4/reference/simple_stmts.html#nonlocal)920921позволяет выполнять запись во внешние области видимости.922923**класс нового стиля**924925Старое название разновидности классов, которая теперь используется для всех объектов классов. В более ранних версиях Python только классы нового стиля могли использовать новые, расширенные возможности, такие как926927[`__slots__`](https://python-all.ru/3.4/reference/datamodel.html#object.__slots__)928929, дескрипторы, свойства,930931[`__getattribute__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__getattribute__)932933, методы класса и статические методы.934935**объект**936937Любые данные с состоянием (атрибуты или значение) и определённым поведением (методы). Также конечный базовый класс любого938939[*класса нового стиля*](https://python-all.ru/3.4/glossary.html#term-new-style-class)940941.942943**пакет**944945[*Модуль*](https://python-all.ru/3.4/glossary.html#term-module) Python, который может содержать подмодули или, рекурсивно, подпакеты. Технически пакет – это модуль Python с атрибутом `__path__`.946947См. также [*обычный пакет*](https://python-all.ru/3.4/glossary.html#term-regular-package) и [*пакет пространства имён*](https://python-all.ru/3.4/glossary.html#term-namespace-package).948949**параметр**950951Именованная сущность в определении [*функции*](https://python-all.ru/3.4/glossary.html#term-function) (или метода), которая указывает на [*аргумент*](https://python-all.ru/3.4/glossary.html#term-argument) (или в некоторых случаях аргументы), который функция может принимать. Существует пять видов параметров:952953- *позиционный или ключевой*: указывает аргумент, который может быть передан либо [*позиционно*](https://python-all.ru/3.4/glossary.html#term-argument), либо в качестве [*ключевого аргумента*](https://python-all.ru/3.4/glossary.html#term-argument). Это вид параметра по умолчанию, например *foo* и *bar* в следующем примере:954955 ```python956 def func(foo, bar=None): ...957 ```958- *Только для позиционной передачи*: указывает аргумент, который может быть передан только по позиции. В Python нет синтаксиса для определения параметров только для позиционной передачи. Однако некоторые встроенные функции имеют такие параметры (например, [`abs()`](https://python-all.ru/3.4/library/functions.html#abs)).959960- *только ключевой*: указывает аргумент, который может быть передан только по ключевому слову. Параметры только по ключевым словам можно определить, включив один вариативно-позиционный параметр или просто `*` в список параметров определения функции перед ними, например *kw\_only1* и *kw\_only2* в следующем примере:961962 ```python963 def func(arg, *, kw_only1, kw_only2): ...964 ```965- *вариативно-позиционный*: указывает, что может быть предоставлена произвольная последовательность позиционных аргументов (в дополнение к любым позиционным аргументам, уже принимаемым другими параметрами). Такой параметр можно определить, добавив `*` перед именем параметра, например *args* в следующем примере:966967 ```python968 def func(*args, **kwargs): ...969 ```970- *вариативно-ключевой*: указывает, что может быть предоставлено произвольно много именованных аргументов (в дополнение к любым именованным аргументам, уже принимаемым другими параметрами). Такой параметр можно определить, добавив `**` перед именем параметра, например *kwargs* в примере выше.971972Параметры могут определять как необязательные, так и обязательные аргументы, а также значения по умолчанию для некоторых необязательных аргументов.973974См. также запись глоссария [*аргумент*](https://python-all.ru/3.4/glossary.html#term-argument), вопрос из FAQ о [*разнице между аргументами и параметрами*](https://python-all.ru/3.4/faq/programming.html#faq-argument-vs-parameter), класс [`inspect.Parameter`](https://python-all.ru/3.4/library/inspect.html#inspect.Parameter), раздел [*Определения функций*](https://python-all.ru/3.4/reference/compound_stmts.html#function), а также [**PEP 362**](https://python-all.ru/3.4/glossary.html).975976**элемент пути**977978Отдельное расположение в979980[*пути импорта*](https://python-all.ru/3.4/glossary.html#term-import-path)981982, которое983984[*поисковик на основе пути*](https://python-all.ru/3.4/glossary.html#term-path-based-finder)985986просматривает для поиска модулей для импорта.987988**искатель элементов пути**989990[*Искатель*](https://python-all.ru/3.4/glossary.html#term-finder)991992, возвращаемый вызываемым объектом на993994[`sys.path_hooks`](https://python-all.ru/3.4/library/sys.html#sys.path_hooks)995996(т.е.997998[*хук записи пути*](https://python-all.ru/3.4/glossary.html#term-path-entry-hook)9991000), который умеет находить модули по заданной10011002[*записи пути*](https://python-all.ru/3.4/glossary.html#term-path-entry)10031004.10051006**перехватчик элемента пути**10071008Вызываемый объект из списка10091010`sys.path_hook`10111012, который возвращает10131014[*искатель записи пути*](https://python-all.ru/3.4/glossary.html#term-path-entry-finder)10151016, если он знает, как находить модули по конкретной10171018[*записи пути*](https://python-all.ru/3.4/glossary.html#term-path-entry)10191020.10211022**искатель на основе пути**10231024Один из10251026[*поисковиков по мета-пути*](https://python-all.ru/3.4/glossary.html#term-meta-path-finder)10271028по умолчанию, который ищет модули в10291030[*пути импорта*](https://python-all.ru/3.4/glossary.html#term-import-path)10311032.10331034**часть**10351036Набор файлов в одном каталоге (возможно, хранящемся в zip-файле), которые входят в пакет пространства имён, как определено в10371038[**PEP 420**](https://python-all.ru/3.4/glossary.html)10391040.10411042**позиционный аргумент**10431044См.10451046[*аргумент*](https://python-all.ru/3.4/glossary.html#term-argument)10471048.10491050**экспериментальный API**10511052Временный API – это API, который намеренно исключён из гарантий обратной совместимости стандартной библиотеки. Хотя серьёзные изменения таких интерфейсов не ожидаются, пока они помечены как временные, возможны несовместимые с предыдущими версиями изменения (вплоть до удаления интерфейса), если основные разработчики сочтут это необходимым. Такие изменения не будут вноситься без веской причины – они произойдут только в случае обнаружения серьёзных фундаментальных недостатков, которые были упущены до включения API.10531054Даже для временных API несовместимые с предыдущими версиями изменения рассматриваются как «крайняя мера» – по-прежнему будут предприниматься все попытки найти обратно совместимое решение для любых выявленных проблем.10551056Этот процесс позволяет стандартной библиотеке продолжать развиваться со временем, не закрепляя проблемные проектные ошибки на длительные периоды времени. Подробнее см. [**PEP 411**](https://python-all.ru/3.4/glossary.html).10571058**экспериментальный пакет**10591060См.10611062[*временный API*](https://python-all.ru/3.4/glossary.html#term-provisional-api)10631064.10651066**Python 3000**10671068Прозвище для линейки релизов Python 3.x (придуманное давно, когда выход версии 3 был чем-то из далёкого будущего). Также сокращённо называется «Py3k».10691070**Питоничный**10711072Идея или фрагмент кода, который тесно следует наиболее распространённым идиомам языка Python, а не использует концепции, общие для других языков. Например, распространённая идиома в Python – перебор всех элементов итерируемого объекта с помощью оператора [`for`](https://python-all.ru/3.4/reference/compound_stmts.html#for). Во многих других языках такой конструкции нет, поэтому люди, не знакомые с Python, иногда используют числовой счётчик:10731074```python1075for i in range(len(food)):1076 print(food[i])1077```10781079В отличие от более чистого, питоничного метода:10801081```python1082for piece in food:1083 print(piece)1084```10851086**полное имя**10871088Точечное имя, показывающее «путь» от глобальной области видимости модуля к классу, функции или методу, определённым в этом модуле, как определено в [**PEP 3155**](https://python-all.ru/3.4/glossary.html). Для функций и классов верхнего уровня квалифицированное имя совпадает с именем объекта:10891090```python1091>>> class C:1092... class D:1093... def meth(self):1094... pass1095...1096>>> C.__qualname__1097'C'1098>>> C.D.__qualname__1099'C.D'1100>>> C.D.meth.__qualname__1101'C.D.meth'1102```11031104Применительно к модулям *полное квалифицированное имя* означает полный точечный путь к модулю, включая все родительские пакеты, например `email.mime.text`:11051106```python1107>>> import email.mime.text1108>>> email.mime.text.__name__1109'email.mime.text'1110```11111112**счётчик ссылок**11131114Число ссылок на объект. Когда счётчик ссылок объекта падает до нуля, он освобождается. Подсчёт ссылок обычно невидим для кода Python, но является ключевым элементом реализации11151116[*CPython*](https://python-all.ru/3.4/glossary.html#term-cpython)11171118. Модуль11191120[`sys`](https://python-all.ru/3.4/library/sys.html#module-sys)11211122определяет функцию11231124[`getrefcount()`](https://python-all.ru/3.4/library/sys.html#sys.getrefcount)11251126, которую программисты могут вызывать для получения счётчика ссылок конкретного объекта.11271128**обычный пакет**11291130Традиционный [*пакет*](https://python-all.ru/3.4/glossary.html#term-package), например каталог, содержащий файл `__init__.py`.11311132См. также [*пространство имён пакета*](https://python-all.ru/3.4/glossary.html#term-namespace-package).11331134**slots**11351136Объявление внутри класса, которое экономит память, заранее выделяя место для атрибутов экземпляра и устраняя словари экземпляров. Хотя этот метод популярен, его правильное применение требует некоторой аккуратности, и его лучше использовать только в редких случаях, когда в приложении с критичной памятью создаётся большое количество экземпляров.11371138**последовательность**11391140[*Итерируемый объект*](https://python-all.ru/3.4/glossary.html#term-iterable), который поддерживает эффективный доступ к элементам по целочисленным индексам через специальный метод [`__getitem__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__getitem__) и определяет метод [`__len__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__len__), возвращающий длину последовательности. Некоторые встроенные типы последовательностей: [`list`](https://python-all.ru/3.4/library/stdtypes.html#list), [`str`](https://python-all.ru/3.4/library/stdtypes.html#str), [`tuple`](https://python-all.ru/3.4/library/stdtypes.html#tuple) и [`bytes`](https://python-all.ru/3.4/library/functions.html#bytes). Обратите внимание, что [`dict`](https://python-all.ru/3.4/library/stdtypes.html#dict) тоже поддерживает [`__getitem__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__getitem__) и [`__len__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__len__), но считается отображением, а не последовательностью, поскольку поиск использует произвольные [*неизменяемые*](https://python-all.ru/3.4/glossary.html#term-immutable) ключи, а не целые числа.11411142Абстрактный базовый класс [`collections.abc.Sequence`](https://python-all.ru/3.4/library/collections.abc.html#collections.abc.Sequence) определяет гораздо более богатый интерфейс, выходящий за рамки просто [`__getitem__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__getitem__) и [`__len__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__len__), добавляя `count()`, `index()`, [`__contains__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__contains__) и [`__reversed__()`](https://python-all.ru/3.4/reference/datamodel.html#object.__reversed__). Типы, реализующие этот расширенный интерфейс, могут быть явно зарегистрированы с помощью `register()`.11431144**одиночная диспетчеризация**11451146A form of11471148[*generic function*](https://python-all.ru/3.4/glossary.html#term-generic-function)11491150dispatch where the implementation is chosen based on the type of a single argument.11511152**срез**11531154Объект, обычно содержащий часть11551156[*последовательности*](https://python-all.ru/3.4/glossary.html#term-sequence)11571158. Срез создаётся с помощью синтаксиса индексации,11591160`[]`11611162с двоеточиями между числами, если указано несколько, как в11631164`variable_name[1:3:5]`11651166. Синтаксис квадратных скобок (индексации) внутри использует объекты11671168[`slice`](https://python-all.ru/3.4/library/functions.html#slice)11691170.11711172**специальный метод**11731174A 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 in11751176[*Special method names*](https://python-all.ru/3.4/reference/datamodel.html#specialnames)11771178.11791180**инструкция**11811182Инструкция является частью блока (набора кода). Инструкция может быть11831184[*выражением*](https://python-all.ru/3.4/glossary.html#term-expression)11851186или одной из нескольких конструкций с ключевым словом, таких как11871188[`if`](https://python-all.ru/3.4/reference/compound_stmts.html#if)11891190,11911192[`while`](https://python-all.ru/3.4/reference/compound_stmts.html#while)11931194или11951196[`for`](https://python-all.ru/3.4/reference/compound_stmts.html#for)11971198.11991200**Структурированная последовательность**12011202Кортеж с именованными элементами. Структурные последовательности предоставляют интерфейс, похожий на12031204[*именованный кортеж*](https://python-all.ru/3.4/glossary.html#term-named-tuple)12051206, в том смысле, что элементы могут быть доступны как по индексу, так и как атрибуты. Однако у них нет методов именованных кортежей, таких как12071208[`_make()`](https://python-all.ru/3.4/library/collections.html#collections.somenamedtuple._make)12091210или12111212[`_asdict()`](https://python-all.ru/3.4/library/collections.html#collections.somenamedtuple._asdict)12131214. Примеры структурных последовательностей:12151216[`sys.float_info`](https://python-all.ru/3.4/library/sys.html#sys.float_info)12171218и возвращаемое значение12191220[`os.stat()`](https://python-all.ru/3.4/library/os.html#os.stat)12211222.12231224**кодировка текста**12251226Кодек, который кодирует строки Unicode в байты.12271228**текстовый файл**12291230[*Файловый объект*](https://python-all.ru/3.4/glossary.html#term-file-object), способный читать и записывать объекты [`str`](https://python-all.ru/3.4/library/stdtypes.html#str). Часто текстовый файл на самом деле обращается к байт-ориентированному потоку данных и автоматически обрабатывает [*текстовую кодировку*](https://python-all.ru/3.4/glossary.html#term-text-encoding).12311232> **См. также**1233>1234> [*Двоичный файл*](https://python-all.ru/3.4/glossary.html#term-binary-file) читает и записывает объекты [`bytes`](https://python-all.ru/3.4/library/functions.html#bytes).12351236**строка в тройных кавычках**12371238Строка, ограниченная тремя экземплярами кавычек (”) или апострофов (‘). Хотя они не предоставляют никакой функциональности, недоступной в строках с одинарными кавычками, они полезны по ряду причин. Они позволяют включать неэкранированные одинарные и двойные кавычки внутри строки и могут занимать несколько строк без использования символа продолжения, что делает их особенно полезными при написании докстрингов.12391240**тип**12411242Тип объекта Python определяет, что это за объект; каждый объект имеет тип. Тип объекта доступен как его атрибут12431244[`__class__`](https://python-all.ru/3.4/library/stdtypes.html#instance.__class__)12451246или может быть получен с помощью12471248`type(obj)`12491250.12511252**универсальные символы новой строки**12531254Способ интерпретации текстовых потоков, при котором все следующие символы распознаются как конец строки: соглашение Unix о конце строки12551256`'\n'`12571258, соглашение Windows12591260`'\r\n'`12611262и старое соглашение Macintosh12631264`'\r'`12651266. См.12671268[**PEP 278**](https://python-all.ru/3.4/glossary.html)12691270и12711272[**PEP 3116**](https://python-all.ru/3.4/glossary.html)12731274, а также12751276[`bytes.splitlines()`](https://python-all.ru/3.4/library/stdtypes.html#bytes.splitlines)12771278для дополнительного применения.12791280**виртуальное окружение**12811282Кооперативно изолированная среда выполнения, которая позволяет пользователям Python и приложениям устанавливать и обновлять пакеты распространения Python, не влияя на поведение других приложений Python, запущенных в той же системе.12831284См. также [*pyvenv – создание виртуальных окружений*](https://python-all.ru/3.4/using/scripts.html#scripts-pyvenv).12851286**виртуальная машина**12871288Компьютер, полностью определённый в программном обеспечении. Виртуальная машина Python выполняет12891290[*байт-код*](https://python-all.ru/3.4/glossary.html#term-bytecode)12911292, генерируемый компилятором байт-кода.12931294**Дзен Python**12951296Перечень принципов и философии проектирования Python, полезных для понимания и использования языка. Этот перечень можно получить, введя в интерактивном режиме «12971298`import this`12991300».1301