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

glossary.md

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

1> **Источник:** https://python-all.ru/3.5/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.5/library/2to3.html#module-lib2to3); отдельная точка входа предоставляется как `Tools/scripts/2to3`. См. [2to3 – автоматический перевод кода Python 2 в Python 3](https://python-all.ru/3.5/library/2to3.html#to3-reference).2223**абстрактный базовый класс**2425Абстрактные базовые классы дополняют2627[утиную типизацию](https://python-all.ru/3.5/glossary.html#term-duck-typing)2829, предоставляя способ определения интерфейсов, когда другие подходы, такие как3031[`hasattr()`](https://python-all.ru/3.5/library/functions.html#hasattr)3233, были бы неуклюжими или вводили бы в заблуждение (например, с3435[магическими методами](https://python-all.ru/3.5/reference/datamodel.html#special-lookup)3637). ABC вводят виртуальные подклассы – классы, которые не наследуются от данного класса, но всё равно распознаются функциями3839[`isinstance()`](https://python-all.ru/3.5/library/functions.html#isinstance)4041и4243[`issubclass()`](https://python-all.ru/3.5/library/functions.html#issubclass)4445; см. документацию модуля4647[`abc`](https://python-all.ru/3.5/library/abc.html#module-abc)4849. Python поставляется со многими встроенными ABC для структур данных (в модуле5051[`collections.abc`](https://python-all.ru/3.5/library/collections.abc.html#module-collections.abc)5253), чисел (в модуле5455[`numbers`](https://python-all.ru/3.5/library/numbers.html#module-numbers)5657), потоков (в модуле5859[`io`](https://python-all.ru/3.5/library/io.html#module-io)6061), искателей и загрузчиков импорта (в модуле6263[`importlib.abc`](https://python-all.ru/3.5/library/importlib.html#module-importlib.abc)6465). Можно создавать собственные ABC с помощью модуля6667[`abc`](https://python-all.ru/3.5/library/abc.html#module-abc)6869.7071**аргумент**7273Значение, передаваемое [функции](https://python-all.ru/3.5/glossary.html#term-function) (или [методу](https://python-all.ru/3.5/glossary.html#term-method)) при вызове функции. Существует два вида аргументов:7475- *именованный аргумент*: аргумент, перед которым стоит идентификатор (например, `name=`) в вызове функции или переданный как значение в словаре перед `**`. Например, `3` и `5` оба являются именованными аргументами в следующих вызовах [`complex()`](https://python-all.ru/3.5/library/functions.html#complex):7677  ```python78  complex(real=3, imag=5)79  complex(**{'real': 3, 'imag': 5})80  ```81- *позиционный аргумент*: аргумент, не являющийся именованным. Позиционные аргументы могут находиться в начале списка аргументов и/или передаваться как элементы [итерируемого объекта](https://python-all.ru/3.5/glossary.html#term-iterable) перед `*`. Например, `3` и `5` оба являются позиционными аргументами в следующих вызовах:8283  ```python84  complex(3, 5)85  complex(*(3, 5))86  ```8788Аргументы присваиваются именованным локальным переменным в теле функции. См. раздел [Вызовы](https://python-all.ru/3.5/reference/expressions.html#calls) для правил, регулирующих это присваивание. Синтаксически для представления аргумента можно использовать любое выражение; вычисленное значение присваивается локальной переменной.8990См. также запись глоссария [параметр](https://python-all.ru/3.5/glossary.html#term-parameter), вопрос FAQ о [различии между аргументами и параметрами](https://python-all.ru/3.5/faq/programming.html#faq-argument-vs-parameter), и [**PEP 362**](https://python-all.ru/3.5/glossary.html).9192**асинхронный контекстный менеджер**9394Объект, управляющий окружением в операторе9596[`async with`](https://python-all.ru/3.5/reference/compound_stmts.html#async-with)9798путём определения методов99100[`__aenter__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__aenter__)101102и103104[`__aexit__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__aexit__)105106. Введён в107108[**PEP 492**](https://python-all.ru/3.5/glossary.html)109110.111112**асинхронный итерируемый объект**113114Объект, который можно использовать в операторе115116[`async for`](https://python-all.ru/3.5/reference/compound_stmts.html#async-for)117118. Из своего метода119120[`__aiter__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__aiter__)121122должен возвращать123124[асинхронный итератор](https://python-all.ru/3.5/glossary.html#term-asynchronous-iterator)125126. Введён127128[**PEP 492**](https://python-all.ru/3.5/glossary.html)129130.131132**асинхронный итератор**133134Объект, реализующий методы135136[`__aiter__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__aiter__)137138и139140[`__anext__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__anext__)141142.143144`__anext__`145146должен возвращать объект147148[ожидаемый объект](https://python-all.ru/3.5/glossary.html#term-awaitable)149150.151152[`async for`](https://python-all.ru/3.5/reference/compound_stmts.html#async-for)153154разрешает ожидаемый объект, возвращённый методом155156[`__anext__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__anext__)157158асинхронного итератора, пока не возникнет исключение159160[`StopAsyncIteration`](https://python-all.ru/3.5/library/exceptions.html#StopAsyncIteration)161162. Введено163164[**PEP 492**](https://python-all.ru/3.5/glossary.html)165166.167168**атрибут**169170Значение, связанное с объектом, на которое ссылаются по имени с помощью выражений с точкой. Например, если объект171172*o*173174имеет атрибут175176*a*177178, на него можно сослаться как179180*o.a*181182.183184**ожидаемый объект**185186Объект, который можно использовать в выражении187188[`await`](https://python-all.ru/3.5/reference/expressions.html#await)189190. Это может быть191192[корутина](https://python-all.ru/3.5/glossary.html#term-coroutine)193194или объект с методом195196[`__await__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__await__)197198. См. также199200[**PEP 492**](https://python-all.ru/3.5/glossary.html)201202.203204**BDFL**205206Доброжелательный диктатор на всю жизнь, также известный как207208[Гвидо ван Россум](https://python-all.ru/3.5/glossary.html)209210, создатель Python.211212**двоичный файл**213214Объект [файловый объект](https://python-all.ru/3.5/glossary.html#term-file-object), способный читать и записывать [байтоподобные объекты](https://python-all.ru/3.5/glossary.html#term-bytes-like-object). Примеры двоичных файлов: файлы, открытые в двоичном режиме (`'rb'`, `'wb'` или `'rb+'`), `sys.stdin.buffer`, `sys.stdout.buffer`, а также экземпляры [`io.BytesIO`](https://python-all.ru/3.5/library/io.html#io.BytesIO) и [`gzip.GzipFile`](https://python-all.ru/3.5/library/gzip.html#gzip.GzipFile).215216> **См. также**217>218> [Текстовый файл](https://python-all.ru/3.5/glossary.html#term-text-file) читает и записывает объекты [`str`](https://python-all.ru/3.5/library/stdtypes.html#str).219220**байтоподобный объект**221222Объект, поддерживающий [протокол буфера](https://python-all.ru/3.5/c-api/buffer.html#bufferobjects) и способный экспортировать C-[непрерывный](https://python-all.ru/3.5/glossary.html#term-contiguous) буфер. Сюда входят все объекты [`bytes`](https://python-all.ru/3.5/library/functions.html#bytes), [`bytearray`](https://python-all.ru/3.5/library/functions.html#bytearray) и [`array.array`](https://python-all.ru/3.5/library/array.html#array.array), а также многие распространённые объекты [`memoryview`](https://python-all.ru/3.5/library/stdtypes.html#memoryview). Байтоподобные объекты могут использоваться в различных операциях с двоичными данными: сжатие, сохранение в двоичный файл, отправка через сокет.223224Некоторым операциям требуются изменяемые двоичные данные. В документации они часто называются «байтоподобные объекты для чтения и записи». Примерами изменяемых буферных объектов являются [`bytearray`](https://python-all.ru/3.5/library/functions.html#bytearray) и [`memoryview`](https://python-all.ru/3.5/library/stdtypes.html#memoryview) объекта [`bytearray`](https://python-all.ru/3.5/library/functions.html#bytearray). Другие операции требуют хранения двоичных данных в неизменяемых объектах («байтоподобные объекты только для чтения»); примеры включают [`bytes`](https://python-all.ru/3.5/library/functions.html#bytes) и [`memoryview`](https://python-all.ru/3.5/library/stdtypes.html#memoryview) объекта [`bytes`](https://python-all.ru/3.5/library/functions.html#bytes).225226**байткод**227228Исходный код Python компилируется в байткод – внутреннее представление программы Python в интерпретаторе CPython. Байткод также кэшируется в файлах `.pyc`, чтобы при повторном выполнении того же файла работа происходила быстрее (повторная компиляция из исходного кода в байткод не требуется). Этот «промежуточный язык», как говорят, выполняется на [виртуальной машине](https://python-all.ru/3.5/glossary.html#term-virtual-machine), которая исполняет машинный код, соответствующий каждому байткоду. Следует отметить, что байткоды не должны работать в разных виртуальных машинах Python и не обязаны быть стабильными между версиями Python.229230Список инструкций байткода можно найти в документации [модуля dis](https://python-all.ru/3.5/library/dis.html#bytecodes).231232**класс**233234Шаблон для создания пользовательских объектов. Определения классов обычно содержат определения методов, которые работают с экземплярами класса.235236**приведение типов**237238Неявное преобразование экземпляра одного типа в другой во время операции, включающей два аргумента одного типа. Например,239240`int(3.15)`241242преобразует число с плавающей запятой в целое243244`3`245246, но в247248`3+4.5`249250каждый аргумент имеет разный тип (один int, один float), и оба должны быть преобразованы к одному типу перед сложением, иначе будет возбуждено исключение251252`TypeError`253254. Без приведения типов программисту пришлось бы нормализовать все аргументы даже совместимых типов к одному значению, например,255256`float(3)+4.5`257258вместо259260`3+4.5`261262.263264**комплексное число**265266Расширение привычной системы действительных чисел, в котором все числа выражаются как сумма действительной и мнимой частей. Мнимые числа – это действительные кратные мнимой единицы (квадратный корень из267268`-1`269270), часто обозначаемой271272`i`273274в математике или275276`j`277278в инженерии. Python имеет встроенную поддержку комплексных чисел, которые записываются в этой последней нотации; мнимая часть записывается с суффиксом279280`j`281282, например,283284`3+1j`285286. Чтобы получить доступ к комплексным аналогам модуля287288[`math`](https://python-all.ru/3.5/library/math.html#module-math)289290, используйте291292[`cmath`](https://python-all.ru/3.5/library/cmath.html#module-cmath)293294. Использование комплексных чисел – довольно продвинутая математическая возможность. Если нет очевидной необходимости в них, их почти наверняка можно безопасно игнорировать.295296**контекстный менеджер**297298Объект, управляющий окружением в операторе299300[`with`](https://python-all.ru/3.5/reference/compound_stmts.html#with)301302путём определения методов303304[`__enter__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__enter__)305306и307308[`__exit__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__exit__)309310. См.311312[**PEP 343**](https://python-all.ru/3.5/glossary.html)313314.315316**непрерывный**317318Буфер считается непрерывным, если он является либо *C-непрерывным*, либо *непрерывным по Фортрану*. Нулевые буферы являются C- и Fortran-непрерывными. В одномерных массивах элементы должны располагаться в памяти рядом друг с другом, в порядке возрастания индексов, начиная с нуля. В многомерных C-непрерывных массивах последний индекс меняется быстрее всего при обходе элементов в порядке адресов памяти. Однако в массивах, непрерывных по Фортрану, первым меняется первый индекс.319320**корутина**321322Корутины – это более обобщённая форма подпрограмм. Подпрограммы входят в одной точке и выходят в другой. Корутины можно входить, выходить и возобновлять во многих разных точках. Они могут быть реализованы с помощью оператора323324[`async def`](https://python-all.ru/3.5/reference/compound_stmts.html#async-def)325326. См. также327328[**PEP 492**](https://python-all.ru/3.5/glossary.html)329330.331332**корутинная функция**333334Функция, возвращающая объект335336[корутина](https://python-all.ru/3.5/glossary.html#term-coroutine)337338. Корутинная функция может быть определена с помощью оператора339340[`async def`](https://python-all.ru/3.5/reference/compound_stmts.html#async-def)341342и может содержать ключевые слова343344[`await`](https://python-all.ru/3.5/reference/expressions.html#await)345346,347348[`async for`](https://python-all.ru/3.5/reference/compound_stmts.html#async-for)349350и351352[`async with`](https://python-all.ru/3.5/reference/compound_stmts.html#async-with)353354. Они были введены в355356[**PEP 492**](https://python-all.ru/3.5/glossary.html)357358.359360**CPython**361362Каноническая реализация языка программирования Python, распространяемая на363364[python.org](https://python-all.ru/3.5/glossary.html)365366. Термин «CPython» используется, когда необходимо отличить эту реализацию от других, таких как Jython или IronPython.367368**декоратор**369370Функция, возвращающая другую функцию, обычно применяется как преобразование функции с помощью синтаксиса `@wrapper`. Распространённые примеры декораторов: [`classmethod()`](https://python-all.ru/3.5/library/functions.html#classmethod) и [`staticmethod()`](https://python-all.ru/3.5/library/functions.html#staticmethod).371372Синтаксис декоратора – всего лишь синтаксический сахар, следующие два определения функций семантически эквивалентны:373374```python375def f(...):376    ...377f = staticmethod(f)378379@staticmethod380def f(...):381    ...382```383384Та же концепция существует и для классов, но там используется реже. См. документацию по [определениям функций](https://python-all.ru/3.5/reference/compound_stmts.html#function) и [определениям классов](https://python-all.ru/3.5/reference/compound_stmts.html#class) для получения дополнительной информации о декораторах.385386**дескриптор**387388Любой объект, определяющий методы [`__get__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__get__), [`__set__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__set__) или [`__delete__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__delete__). Когда атрибут класса является дескриптором, его особое поведение при связывании срабатывает при поиске атрибута. Обычно использование *a.b* для получения, установки или удаления атрибута ищет объект с именем *b* в словаре класса для *a*, но если *b* является дескриптором, то вызывается соответствующий метод дескриптора. Понимание дескрипторов – ключ к глубокому пониманию Python, поскольку они лежат в основе многих возможностей, включая функции, методы, свойства, методы класса, статические методы и ссылки на суперклассы.389390Подробнее о методах дескрипторов см. в [Implementing Descriptors](https://python-all.ru/3.5/reference/datamodel.html#descriptors).391392**словарь**393394Ассоциативный массив, в котором произвольные ключи сопоставляются значениям. Ключами могут быть любые объекты с методами395396[`__hash__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__hash__)397398и399400[`__eq__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__eq__)401402. В Perl называется хешем.403404**представление словаря**405406Объекты, возвращаемые методами407408[`dict.keys()`](https://python-all.ru/3.5/library/stdtypes.html#dict.keys)409410,411412[`dict.values()`](https://python-all.ru/3.5/library/stdtypes.html#dict.values)413414и415416[`dict.items()`](https://python-all.ru/3.5/library/stdtypes.html#dict.items)417418, называются представлениями словаря. Они предоставляют динамическое представление записей словаря, то есть при изменении словаря представление отражает эти изменения. Чтобы преобразовать представление словаря в обычный список, используйте419420`list(dictview)`421422. См.423424[Объекты представлений словаря](https://python-all.ru/3.5/library/stdtypes.html#dict-views)425426.427428**докстринг**429430Строковый литерал, который появляется как первое выражение в классе, функции или модуле. Хотя он игнорируется при выполнении кода внутри блока, компилятор распознаёт его и помещает в атрибут431432`__doc__`433434содержащего класса, функции или модуля. Поскольку к нему можно получить доступ через интроспекцию, это каноническое место для документации объекта.435436**утиная типизация**437438Стиль программирования, который не проверяет тип объекта для определения, обладает ли он нужным интерфейсом; вместо этого метод или атрибут просто вызывается или используется («Если это выглядит как утка и крякает как утка, значит, это утка»). Делая упор на интерфейсы, а не на конкретные типы, хорошо спроектированный код повышает гибкость за счёт полиморфной замены. Утиная типизация избегает проверок с помощью439440[`type()`](https://python-all.ru/3.5/library/functions.html#type)441442или443444[`isinstance()`](https://python-all.ru/3.5/library/functions.html#isinstance)445446. (Однако утиную типизацию можно дополнить447448[абстрактными базовыми классами](https://python-all.ru/3.5/glossary.html#term-abstract-base-class)449450.) Вместо этого она обычно использует проверки451452[`hasattr()`](https://python-all.ru/3.5/library/functions.html#hasattr)453454или программирование в стиле455456[EAFP](https://python-all.ru/3.5/glossary.html#term-eafp)457458.459460**EAFP**461462Легче попросить прощения, чем разрешения. Этот распространённый стиль программирования на Python предполагает наличие допустимых ключей или атрибутов и перехватывает исключения, если предположение оказывается неверным. Этот чистый и быстрый стиль характеризуется наличием множества операторов463464[`try`](https://python-all.ru/3.5/reference/compound_stmts.html#try)465466и467468[`except`](https://python-all.ru/3.5/reference/compound_stmts.html#except)469470. Этот подход противопоставляется стилю471472[LBYL](https://python-all.ru/3.5/glossary.html#term-lbyl)473474, распространённому во многих других языках, таких как C.475476**выражение**477478Фрагмент синтаксиса, который можно вычислить для получения некоторого значения. Иными словами, выражение – это совокупность элементов выражения, таких как литералы, имена, доступ к атрибутам, операторы или вызовы функций, которые возвращают значение. В отличие от многих других языков, не все языковые конструкции являются выражениями. Существуют также479480[оператор](https://python-all.ru/3.5/glossary.html#term-statement)481482ы, которые не могут использоваться как выражения, например483484[`if`](https://python-all.ru/3.5/reference/compound_stmts.html#if)485486. Присваивания также являются операторами, а не выражениями.487488**модуль-расширение**489490Модуль, написанный на C или C++, использующий C API Python для взаимодействия с ядром и пользовательским кодом.491492**файловый объект**493494Объект, предоставляющий файловый API (с методами, такими как `read()` или `write()`) для нижележащего ресурса. В зависимости от способа создания, файловый объект может обеспечивать доступ к реальному файлу на диске или к другому типу хранилища или устройства связи (например, стандартный ввод/вывод, буферы в памяти, сокеты, каналы и т.д.). Файловые объекты также называются *объектами, подобными файлам* или *потоками данных*.495496There are actually three categories of file objects: raw [binary files](https://python-all.ru/3.5/glossary.html#term-binary-file), buffered [binary files](https://python-all.ru/3.5/glossary.html#term-binary-file) and [text files](https://python-all.ru/3.5/glossary.html#term-text-file). Their interfaces are defined in the [`io`](https://python-all.ru/3.5/library/io.html#module-io) module. The canonical way to create a file object is by using the [`open()`](https://python-all.ru/3.5/library/functions.html#open) function.497498**файлоподобный объект**499500Синоним для501502[файлового объекта](https://python-all.ru/3.5/glossary.html#term-file-object)503504.505506**искатель**507508Объект, который пытается найти [загрузчик](https://python-all.ru/3.5/glossary.html#term-loader) для импортируемого модуля.509510Начиная с Python 3.3, существуют два типа искателей: [мета-искатели путей](https://python-all.ru/3.5/glossary.html#term-meta-path-finder) для использования с [`sys.meta_path`](https://python-all.ru/3.5/library/sys.html#sys.meta_path), и [искатели элементов путей](https://python-all.ru/3.5/glossary.html#term-path-entry-finder) для использования с [`sys.path_hooks`](https://python-all.ru/3.5/library/sys.html#sys.path_hooks).511512См. [**PEP 302**](https://python-all.ru/3.5/glossary.html), [**PEP 420**](https://python-all.ru/3.5/glossary.html) и [**PEP 451**](https://python-all.ru/3.5/glossary.html) для получения более подробной информации.513514**целочисленное деление**515516Математическое деление, округляющее результат до ближайшего целого вниз. Оператор деления с округлением вниз –517518`//`519520. Например, выражение521522`11 // 4`523524вычисляется в525526`2`527528в отличие от529530`2.75`531532, возвращаемого при истинном делении с плавающей запятой. Обратите внимание, что533534`(-11) // 4`535536равно537538`-3`539540, потому что это541542`-2.75`543544, округлённое545546*вниз*547548. См.549550[**PEP 238**](https://python-all.ru/3.5/glossary.html)551552.553554**функция**555556Последовательность инструкций, которая возвращает некоторое значение вызывающему коду. В неё также можно передать ноль или более557558[аргументов](https://python-all.ru/3.5/glossary.html#term-argument)559560, которые могут использоваться при выполнении тела. См. также561562[параметр](https://python-all.ru/3.5/glossary.html#term-parameter)563564,565566[метод](https://python-all.ru/3.5/glossary.html#term-method)567568, и раздел569570[Определения функций](https://python-all.ru/3.5/reference/compound_stmts.html#function)571572.573574**аннотация функции**575576Произвольное значение метаданных, связанное с параметром функции или возвращаемым значением. Его синтаксис описан в разделе [Определения функций](https://python-all.ru/3.5/reference/compound_stmts.html#function). Аннотации могут быть получены через специальный атрибут `__annotations__` объекта функции.577578Сам Python не придаёт никакого особого значения аннотациям функций. Они предназначены для интерпретации сторонними библиотеками или инструментами. См. [**PEP 3107**](https://python-all.ru/3.5/glossary.html), где описаны некоторые из их возможных применений.579580**future**581582Псевдомодуль, с помощью которого программисты могут включать новые возможности языка, несовместимые с текущим интерпретатором.583584Импортировав модуль [`__future__`](https://python-all.ru/3.5/library/__future__.html#module-__future__) и вычислив его переменные, можно увидеть, когда новая возможность была впервые добавлена в язык и когда она становится используемой по умолчанию:585586```python587>>> import __future__588>>> __future__.division589_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)590```591592**сборка мусора**593594Процесс освобождения памяти, когда она больше не используется. Python выполняет сборку мусора с помощью подсчёта ссылок и циклического сборщика мусора, который способен обнаруживать и разрывать циклические ссылки.595596**генератор**597598Функция, возвращающая [итератор генератора](https://python-all.ru/3.5/glossary.html#term-generator-iterator). Она выглядит как обычная функция, за исключением того, что содержит выражения [`yield`](https://python-all.ru/3.5/reference/simple_stmts.html#yield) для получения последовательности значений, которые можно использовать в цикле for или получать по одному с помощью функции [`next()`](https://python-all.ru/3.5/library/functions.html#next).599600Обычно относится к функции-генератору, но в некоторых контекстах может относиться к *итератору генератора*. Если предполагаемое значение неясно, использование полных терминов позволяет избежать неоднозначности.601602**итератор генератора**603604Объект, созданный функцией [генератора](https://python-all.ru/3.5/glossary.html#term-generator).605606Каждый [`yield`](https://python-all.ru/3.5/reference/simple_stmts.html#yield) временно приостанавливает обработку, запоминая расположение и состояние выполнения (включая локальные переменные и ожидающие операторы try). Когда *итератор генератора* возобновляется, он продолжает с того места, где остановился (в отличие от функций, которые начинают заново при каждом вызове).607608**генераторное выражение**609610Выражение, которое возвращает итератор. Оно выглядит как обычное выражение, за которым следует выражение [`for`](https://python-all.ru/3.5/reference/compound_stmts.html#for), определяющее переменную цикла, диапазон и необязательное выражение [`if`](https://python-all.ru/3.5/reference/compound_stmts.html#if). Полученное выражение генерирует значения для объемлющей функции:611612```python613>>> sum(i*i for i in range(10))         # сумма квадратов 0, 1, 4, ... 81614285615```616617**обобщённая функция**618619Функция, состоящая из нескольких функций, реализующих одну и ту же операцию для разных типов. Какая реализация должна использоваться при вызове, определяется алгоритмом диспетчеризации.620621См. также статью глоссария [одиночная диспетчеризация](https://python-all.ru/3.5/glossary.html#term-single-dispatch), декоратор [`functools.singledispatch()`](https://python-all.ru/3.5/library/functools.html#functools.singledispatch) и [**PEP 443**](https://python-all.ru/3.5/glossary.html).622623**GIL**624625См.626627[глобальная блокировка интерпретатора](https://python-all.ru/3.5/glossary.html#term-global-interpreter-lock)628629.630631**глобальная блокировка интерпретатора**632633Механизм, используемый интерпретатором [CPython](https://python-all.ru/3.5/glossary.html#term-cpython) для обеспечения того, чтобы только один поток выполнял [байт-код](https://python-all.ru/3.5/glossary.html#term-bytecode) Python в каждый момент времени. Это упрощает реализацию CPython, делая объектную модель (включая критические встроенные типы, такие как [`dict`](https://python-all.ru/3.5/library/stdtypes.html#dict)) неявно безопасной при конкурентном доступе. Блокировка всего интерпретатора упрощает многопоточность интерпретатора, но ценой потери большей части параллелизма, обеспечиваемого многопроцессорными машинами.634635Однако некоторые расширяющие модули, как стандартные, так и сторонние, спроектированы так, чтобы освобождать GIL при выполнении вычислительно интенсивных задач, таких как сжатие или хеширование. Кроме того, GIL всегда освобождается при выполнении операций ввода-вывода.636637Прежние попытки создать «свободно-поточный» интерпретатор (тот, который блокирует общие данные с гораздо более мелкой гранулярностью) не увенчались успехом, потому что производительность страдала в типичном случае с одним процессором. Считается, что преодоление этой проблемы производительности сделало бы реализацию гораздо более сложной и, следовательно, более дорогой в сопровождении.638639**хешируемый**640641Объект называется *хешируемым*, если он имеет хеш-значение, которое никогда не меняется за время его существования (для этого требуется метод [`__hash__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__hash__)), и может сравниваться с другими объектами (для этого требуется метод [`__eq__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__eq__)). Хешируемые объекты, равные при сравнении, должны иметь одинаковое хеш-значение.642643Хешируемость позволяет использовать объект в качестве ключа словаря и элемента множества, поскольку эти структуры данных внутренне используют хеш-значение.644645Все неизменяемые встроенные объекты Python хешируемы; изменяемые контейнеры (такие как списки или словари) – нет. Объекты, которые являются экземплярами пользовательских классов, по умолчанию хешируемы. Все они сравниваются неравными (кроме сравнения с самими собой), и их хеш-значение вычисляется из их [`id()`](https://python-all.ru/3.5/library/functions.html#id).646647**IDLE**648649Интегрированная среда разработки для Python. IDLE – это базовый редактор и среда интерпретатора, которая поставляется со стандартной дистрибуцией Python.650651**неизменяемый**652653Объект с фиксированным значением. К неизменяемым объектам относятся числа, строки и кортежи. Такой объект нельзя изменить. Если требуется сохранить другое значение, необходимо создать новый объект. Они играют важную роль там, где требуется постоянное хеш-значение, например в качестве ключа в словаре.654655**путь импорта**656657Список расположений (или658659[записей пути](https://python-all.ru/3.5/glossary.html#term-path-entry)660661), которые просматриваются662663[искателем на основе пути](https://python-all.ru/3.5/glossary.html#term-path-based-finder)664665для поиска модулей для импорта. Во время импорта этот список расположений обычно берётся из666667[`sys.path`](https://python-all.ru/3.5/library/sys.html#sys.path)668669, но для подпакетов он также может браться из атрибута670671`__path__`672673родительского пакета.674675**импортирование**676677Процесс, благодаря которому код Python в одном модуле становится доступным коду Python в другом модуле.678679**импортёр**680681Объект, который одновременно находит и загружает модуль; объект, являющийся как682683[искателем](https://python-all.ru/3.5/glossary.html#term-finder)684685, так и686687[загрузчиком](https://python-all.ru/3.5/glossary.html#term-loader)688689.690691**интерактивный**692693Python имеет интерактивный интерпретатор, что позволяет вводить инструкции и выражения в приглашении интерпретатора, немедленно выполнять их и видеть результаты. Для этого достаточно запустить694695`python`696697без аргументов (возможно, выбрав его из главного меню компьютера). Это очень мощный способ проверки новых идей или изучения модулей и пакетов (помните698699`help(x)`700701).702703**интерпретируемый**704705Python является интерпретируемым языком, в отличие от компилируемых, хотя различие может быть размытым из-за наличия компилятора байткода. Это означает, что исходные файлы можно запускать напрямую, без явного создания исполняемого файла, который затем выполняется. Интерпретируемые языки обычно имеют более короткий цикл разработки/отладки, чем компилируемые, хотя их программы, как правило, выполняются медленнее. См. также706707[интерактивный](https://python-all.ru/3.5/glossary.html#term-interactive)708709.710711**завершение работы интерпретатора**712713При запросе на завершение работы интерпретатор Python переходит в специальную фазу, на которой постепенно освобождает все выделенные ресурсы, такие как модули и различные критические внутренние структуры. Он также несколько раз вызывает [сборщик мусора](https://python-all.ru/3.5/glossary.html#term-garbage-collection). Это может вызвать выполнение кода в пользовательских деструкторах или колбэках слабых ссылок. Код, выполняемый во время фазы завершения работы, может столкнуться с различными исключениями, поскольку используемые им ресурсы могут перестать работать (типичные примеры – библиотечные модули или механизм предупреждений).714715Основная причина завершения работы интерпретатора – завершение выполнения `__main__` модуля или запущенного скрипта.716717**итерируемый объект**718719Объект, способный возвращать свои элементы по одному. Примеры итерируемых объектов включают все последовательности (такие как720721[`list`](https://python-all.ru/3.5/library/stdtypes.html#list)722723,724725[`str`](https://python-all.ru/3.5/library/stdtypes.html#str)726727и728729[`tuple`](https://python-all.ru/3.5/library/stdtypes.html#tuple)730731) и некоторые непоследовательные типы, например732733[`dict`](https://python-all.ru/3.5/library/stdtypes.html#dict)734735,736737[файловые объекты](https://python-all.ru/3.5/glossary.html#term-file-object)738739, а также объекты любых классов, определённых с методом740741[`__iter__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__iter__)742743или744745[`__getitem__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__getitem__)746747. Итерируемые объекты могут использоваться в цикле748749[`for`](https://python-all.ru/3.5/reference/compound_stmts.html#for)750751и во многих других местах, где требуется последовательность (752753[`zip()`](https://python-all.ru/3.5/library/functions.html#zip)754755,756757[`map()`](https://python-all.ru/3.5/library/functions.html#map)758759, …). Когда итерируемый объект передаётся в качестве аргумента встроенной функции760761[`iter()`](https://python-all.ru/3.5/library/functions.html#iter)762763, она возвращает итератор для этого объекта. Этот итератор годится для одного прохода по набору значений. При работе с итерируемыми объектами обычно не нужно вызывать764765[`iter()`](https://python-all.ru/3.5/library/functions.html#iter)766767или самому иметь дело с объектами-итераторами. Оператор768769`for`770771делает это автоматически, создавая временную безымянную переменную для хранения итератора на время цикла. См. также772773[итератор](https://python-all.ru/3.5/glossary.html#term-iterator)774775,776777[последовательность](https://python-all.ru/3.5/glossary.html#term-sequence)778779и780781[генератор](https://python-all.ru/3.5/glossary.html#term-generator)782783.784785**итератор**786787Объект, представляющий поток данных. Повторные вызовы метода [`__next__()`](https://python-all.ru/3.5/library/stdtypes.html#iterator.__next__) итератора (или передача его встроенной функции [`next()`](https://python-all.ru/3.5/library/functions.html#next)) возвращают последовательные элементы потока. Когда данные заканчиваются, возбуждается исключение [`StopIteration`](https://python-all.ru/3.5/library/exceptions.html#StopIteration). После этого объект итератора исчерпан, и любой дальнейший вызов его метода `__next__()` снова возбуждает [`StopIteration`](https://python-all.ru/3.5/library/exceptions.html#StopIteration). Итераторы должны иметь метод [`__iter__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__iter__), который возвращает сам объект итератора, поэтому каждый итератор также является итерируемым и может использоваться в большинстве мест, где принимаются другие итерируемые объекты. Одним заметным исключением является код, который пытается выполнить многократные проходы итерации. Объект-контейнер (например, [`list`](https://python-all.ru/3.5/library/stdtypes.html#list)) создаёт новый итератор каждый раз, когда вы передаёте его функции [`iter()`](https://python-all.ru/3.5/library/functions.html#iter) или используете в цикле [`for`](https://python-all.ru/3.5/reference/compound_stmts.html#for). Попытка сделать то же самое с итератором приведёт к возврату того же самого исчерпанного объекта итератора, использованного в предыдущем проходе, из-за чего он будет выглядеть как пустой контейнер.788789Дополнительную информацию можно найти в [Iterator Types](https://python-all.ru/3.5/library/stdtypes.html#typeiter).790791**функция ключа**792793Функция-ключ или функция сортировки – это вызываемый объект, возвращающий значение, используемое для сортировки или упорядочивания. Например, [`locale.strxfrm()`](https://python-all.ru/3.5/library/locale.html#locale.strxfrm) используется для создания ключа сортировки, учитывающего локальные соглашения сортировки.794795Ряд инструментов в Python принимают функцию-ключ для управления порядком или группировкой элементов. К ним относятся [`min()`](https://python-all.ru/3.5/library/functions.html#min), [`max()`](https://python-all.ru/3.5/library/functions.html#max), [`sorted()`](https://python-all.ru/3.5/library/functions.html#sorted), [`list.sort()`](https://python-all.ru/3.5/library/stdtypes.html#list.sort), [`heapq.merge()`](https://python-all.ru/3.5/library/heapq.html#heapq.merge), [`heapq.nsmallest()`](https://python-all.ru/3.5/library/heapq.html#heapq.nsmallest), [`heapq.nlargest()`](https://python-all.ru/3.5/library/heapq.html#heapq.nlargest) и [`itertools.groupby()`](https://python-all.ru/3.5/library/itertools.html#itertools.groupby).796797Есть несколько способов создать функцию ключа. Например, метод [`str.lower()`](https://python-all.ru/3.5/library/stdtypes.html#str.lower) может служить функцией ключа для сортировки без учёта регистра. Альтернативно, функцию ключа можно построить из выражения [`lambda`](https://python-all.ru/3.5/reference/expressions.html#lambda), такого как `lambda r: (r[0], r[2])`. Кроме того, модуль [`operator`](https://python-all.ru/3.5/library/operator.html#module-operator) предоставляет три конструктора функций ключа: [`attrgetter()`](https://python-all.ru/3.5/library/operator.html#operator.attrgetter), [`itemgetter()`](https://python-all.ru/3.5/library/operator.html#operator.itemgetter) и [`methodcaller()`](https://python-all.ru/3.5/library/operator.html#operator.methodcaller). Примеры создания и использования функций ключа см. в [Sorting HOW TO](https://python-all.ru/3.5/howto/sorting.html#sortinghowto).798799**именованный аргумент**800801См.802803[аргумент](https://python-all.ru/3.5/glossary.html#term-argument)804805.806807**lambda**808809Анонимная встроенная функция, состоящая из одного810811[выражения](https://python-all.ru/3.5/glossary.html#term-expression)812813, которое вычисляется при вызове функции. Синтаксис создания лямбда-функции:814815`lambda [arguments]: expression`816817**LBYL**818819Сначала проверь, потом делай (Look before you leap). Этот стиль кодирования явно проверяет предусловия перед вызовами или обращениями. Этот стиль противоположен подходу [EAFP](https://python-all.ru/3.5/glossary.html#term-eafp) и характеризуется наличием множества инструкций [`if`](https://python-all.ru/3.5/reference/compound_stmts.html#if).820821В многопоточной среде подход LBYL может привести к состоянию гонки между «проверкой» и «действием». Например, код `if key in mapping: return mapping[key]` может завершиться ошибкой, если другой поток удалит *ключ* из *отображения* после проверки, но до обращения. Эту проблему можно решить с помощью блокировок или используя подход EAFP.822823**list**824825Встроенная в Python826827[последовательность](https://python-all.ru/3.5/glossary.html#term-sequence)828829. Несмотря на название, она больше похожа на массив в других языках, чем на связный список, поскольку доступ к элементам осуществляется за O(1).830831**генератор списка**832833Компактный способ обработки всех или части элементов последовательности и возврата списка с результатами.834835`result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]`836837генерирует список строк, содержащих чётные шестнадцатеричные числа (0x..) в диапазоне от 0 до 255. Предложение838839[`if`](https://python-all.ru/3.5/reference/compound_stmts.html#if)840841является необязательным. Если оно опущено, обрабатываются все элементы в842843`range(256)`844845.846847**загрузчик**848849Объект, который загружает модуль. Он должен определять метод с именем850851`load_module()`852853. Загрузчик обычно возвращается854855[искателем](https://python-all.ru/3.5/glossary.html#term-finder)856857. См.858859[**PEP 302**](https://python-all.ru/3.5/glossary.html)860861для подробностей и862863[`importlib.abc.Loader`](https://python-all.ru/3.5/library/importlib.html#importlib.abc.Loader)864865для866867[абстрактного базового класса](https://python-all.ru/3.5/glossary.html#term-abstract-base-class)868869.870871**отображение**872873Контейнер, поддерживающий произвольный поиск по ключу и реализующий методы, указанные в874875[`Mapping`](https://python-all.ru/3.5/library/collections.abc.html#collections.abc.Mapping)876877или878879[`MutableMapping`](https://python-all.ru/3.5/library/collections.abc.html#collections.abc.MutableMapping)880881[абстрактных базовых классов](https://python-all.ru/3.5/library/collections.abc.html#collections-abstract-base-classes)882883. Примеры включают884885[`dict`](https://python-all.ru/3.5/library/stdtypes.html#dict)886887,888889[`collections.defaultdict`](https://python-all.ru/3.5/library/collections.html#collections.defaultdict)890891,892893[`collections.OrderedDict`](https://python-all.ru/3.5/library/collections.html#collections.OrderedDict)894895и896897[`collections.Counter`](https://python-all.ru/3.5/library/collections.html#collections.Counter)898899.900901**искатель мета-пути**902903[Искатель](https://python-all.ru/3.5/glossary.html#term-finder), возвращаемый поиском по [`sys.meta_path`](https://python-all.ru/3.5/library/sys.html#sys.meta_path). Мета-искатели путей связаны с [искателями записей путей](https://python-all.ru/3.5/glossary.html#term-path-entry-finder), но отличаются от них.904905См. [`importlib.abc.MetaPathFinder`](https://python-all.ru/3.5/library/importlib.html#importlib.abc.MetaPathFinder) для получения списка методов, реализуемых мета-искателями путей.906907**метакласс**908909Класс класса. Определения классов создают имя класса, словарь класса и список базовых классов. Метакласс отвечает за приём этих трёх аргументов и создание класса. Большинство объектно-ориентированных языков программирования предоставляют реализацию по умолчанию. Особенность Python в том, что можно создавать пользовательские метаклассы. Большинству пользователей этот инструмент никогда не понадобится, но когда возникает необходимость, метаклассы могут предоставить мощные и элегантные решения. Они использовались для логирования доступа к атрибутам, добавления потокобезопасности, отслеживания создания объектов, реализации синглтонов и многих других задач.910911Дополнительную информацию можно найти в [Настройка создания классов](https://python-all.ru/3.5/reference/datamodel.html#metaclasses).912913**метод**914915Функция, определённая внутри тела класса. При вызове как атрибут экземпляра этого класса метод получает объект экземпляра в качестве первого916917[аргумента](https://python-all.ru/3.5/glossary.html#term-argument)918919(обычно называемого920921`self`922923). См.924925[функцию](https://python-all.ru/3.5/glossary.html#term-function)926927и928929[вложенную область видимости](https://python-all.ru/3.5/glossary.html#term-nested-scope)930931.932933**порядок разрешения методов**934935Порядок разрешения методов – это порядок, в котором базовые классы просматриваются для поиска атрибута. См.936937[Порядок разрешения методов Python 2.3](https://python-all.ru/3.5/glossary.html)938939для подробностей алгоритма, используемого интерпретатором Python начиная с версии 2.3.940941**модуль**942943Объект, служащий организационной единицей кода Python. Модули имеют пространство имён, содержащее произвольные объекты Python. Модули загружаются в Python в процессе [импортирования](https://python-all.ru/3.5/glossary.html#term-importing).944945См. также [пакет](https://python-all.ru/3.5/glossary.html#term-package).946947**спецификация модуля**948949Пространство имён, содержащее информацию, связанную с импортом, используемую для загрузки модуля. Экземпляр950951[`importlib.machinery.ModuleSpec`](https://python-all.ru/3.5/library/importlib.html#importlib.machinery.ModuleSpec)952953.954955**MRO**956957См.958959[порядок разрешения методов](https://python-all.ru/3.5/glossary.html#term-method-resolution-order)960961.962963**изменяемый**964965Изменяемые объекты могут менять своё значение, но сохраняют свой966967[`id()`](https://python-all.ru/3.5/library/functions.html#id)968969. См. также970971[неизменяемый](https://python-all.ru/3.5/glossary.html#term-immutable)972973.974975**именованный кортеж**976977Любой класс, похожий на кортеж, чьи индексируемые элементы также доступны через именованные атрибуты (например, [`time.localtime()`](https://python-all.ru/3.5/library/time.html#time.localtime) возвращает объект, похожий на кортеж, где *year* доступен либо по индексу, например `t[0]`, либо через именованный атрибут, например `t.tm_year`).978979Именованный кортеж может быть встроенным типом, таким как [`time.struct_time`](https://python-all.ru/3.5/library/time.html#time.struct_time), или может быть создан с помощью обычного определения класса. Полнофункциональный именованный кортеж также может быть создан с помощью фабричной функции [`collections.namedtuple()`](https://python-all.ru/3.5/library/collections.html#collections.namedtuple). Последний подход автоматически предоставляет дополнительные возможности, такие как самодокументируемое представление, например `Employee(name='jones', title='programmer')`.980981**пространство имён**982983Место, где хранится переменная. Пространства имён реализованы как словари. Существуют локальное, глобальное и встроенное пространства имён, а также вложенные пространства имён в объектах (в методах). Пространства имён способствуют модульности, предотвращая конфликты имён. Например, функции984985[`builtins.open`](https://python-all.ru/3.5/library/functions.html#open)986987и988989[`os.open()`](https://python-all.ru/3.5/library/os.html#os.open)990991различаются своими пространствами имён. Пространства имён также облегчают читаемость и поддержку, показывая, какой модуль реализует функцию. Например, запись992993[`random.seed()`](https://python-all.ru/3.5/library/random.html#random.seed)994995или996997[`itertools.islice()`](https://python-all.ru/3.5/library/itertools.html#itertools.islice)998999ясно даёт понять, что эти функции реализованы модулями10001001[`random`](https://python-all.ru/3.5/library/random.html#module-random)10021003и10041005[`itertools`](https://python-all.ru/3.5/library/itertools.html#module-itertools)10061007соответственно.10081009**пакет пространства имён**10101011[**PEP 420**](https://python-all.ru/3.5/glossary.html) [пакет](https://python-all.ru/3.5/glossary.html#term-package), который служит только контейнером для подпакетов. Пространства имён пакетов могут не иметь физического представления и, в частности, не похожи на [обычный пакет](https://python-all.ru/3.5/glossary.html#term-regular-package), так как у них нет файла `__init__.py`.10121013См. также [модуль](https://python-all.ru/3.5/glossary.html#term-module).10141015**вложенная область видимости**10161017Возможность обращаться к переменной из внешнего определения. Например, функция, определённая внутри другой функции, может обращаться к переменным внешней функции. Обратите внимание: вложенные области видимости по умолчанию работают только для чтения, но не для присваивания. Локальные переменные и читаются, и записываются в самой внутренней области. Аналогично, глобальные переменные читаются и записываются в глобальном пространстве имён.10181019[`nonlocal`](https://python-all.ru/3.5/reference/simple_stmts.html#nonlocal)10201021позволяет записывать во внешние области.10221023**класс нового стиля**10241025Устаревшее название для разновидности классов, которая сейчас используется для всех объектов-классов. В более ранних версиях Python только классы нового стиля могли использовать новые универсальные возможности Python, такие как10261027[`__slots__`](https://python-all.ru/3.5/reference/datamodel.html#object.__slots__)10281029, дескрипторы, свойства,10301031[`__getattribute__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__getattribute__)10321033, методы класса и статические методы.10341035**объект**10361037Любые данные с состоянием (атрибуты или значение) и определённым поведением (методы). Также конечный базовый класс любого10381039[класса нового стиля](https://python-all.ru/3.5/glossary.html#term-new-style-class)10401041.10421043**пакет**10441045Модуль Python [модуль](https://python-all.ru/3.5/glossary.html#term-module), который может содержать подмодули или, рекурсивно, подпакеты. Технически пакет – это модуль Python с атрибутом `__path__`.10461047См. также [обычный пакет](https://python-all.ru/3.5/glossary.html#term-regular-package) и [пакет пространства имён](https://python-all.ru/3.5/glossary.html#term-namespace-package).10481049**параметр**10501051Именованная сущность в определении [функции](https://python-all.ru/3.5/glossary.html#term-function) (или метода), которая указывает на [аргумент](https://python-all.ru/3.5/glossary.html#term-argument) (или в некоторых случаях аргументы), который функция может принимать. Существует пять видов параметров:10521053- *позиционный или ключевой*: указывает аргумент, который может быть передан либо [позиционно](https://python-all.ru/3.5/glossary.html#term-argument), либо в качестве [ключевого аргумента](https://python-all.ru/3.5/glossary.html#term-argument). Это вид параметра по умолчанию, например *foo* и *bar* в следующем примере:10541055  ```python1056  def func(foo, bar=None): ...1057  ```1058- *позиционно-только*: указывает аргумент, который может быть передан только по позиции. В Python нет синтаксиса для определения позиционно-только параметров. Однако некоторые встроенные функции имеют позиционно-только параметры (например, [`abs()`](https://python-all.ru/3.5/library/functions.html#abs)).10591060- *только ключевой*: указывает аргумент, который может быть передан только по ключевому слову. Параметры только по ключевым словам можно определить, включив один вариативно-позиционный параметр или просто `*` в список параметров определения функции перед ними, например *kw\_only1* и *kw\_only2* в следующем примере:10611062  ```python1063  def func(arg, *, kw_only1, kw_only2): ...1064  ```1065- *вариативно-позиционный*: указывает, что может быть предоставлена произвольная последовательность позиционных аргументов (в дополнение к любым позиционным аргументам, уже принимаемым другими параметрами). Такой параметр можно определить, добавив `*` перед именем параметра, например *args* в следующем примере:10661067  ```python1068  def func(*args, **kwargs): ...1069  ```1070- *вариативно-ключевой*: указывает, что может быть предоставлено произвольно много именованных аргументов (в дополнение к любым именованным аргументам, уже принимаемым другими параметрами). Такой параметр можно определить, добавив `**` перед именем параметра, например *kwargs* в примере выше.10711072Параметры могут определять как необязательные, так и обязательные аргументы, а также значения по умолчанию для некоторых необязательных аргументов.10731074См. также статью глоссария [аргумент](https://python-all.ru/3.5/glossary.html#term-argument), вопрос из FAQ о [разнице между аргументами и параметрами](https://python-all.ru/3.5/faq/programming.html#faq-argument-vs-parameter), класс [`inspect.Parameter`](https://python-all.ru/3.5/library/inspect.html#inspect.Parameter), раздел [Определения функций](https://python-all.ru/3.5/reference/compound_stmts.html#function) и [**PEP 362**](https://python-all.ru/3.5/glossary.html).10751076**элемент пути**10771078Отдельное расположение в10791080[пути импорта](https://python-all.ru/3.5/glossary.html#term-import-path)10811082, которое10831084[поисковик на основе пути](https://python-all.ru/3.5/glossary.html#term-path-based-finder)10851086просматривает для поиска модулей для импорта.10871088**искатель элементов пути**10891090[Поисковик](https://python-all.ru/3.5/glossary.html#term-finder), возвращаемый вызываемым объектом из [`sys.path_hooks`](https://python-all.ru/3.5/library/sys.html#sys.path_hooks) (т.е. [перехватчиком элемента пути](https://python-all.ru/3.5/glossary.html#term-path-entry-hook)), который умеет находить модули по заданному [элементу пути](https://python-all.ru/3.5/glossary.html#term-path-entry).10911092Методы, которые реализуют поисковики элементов пути, описаны в [`importlib.abc.PathEntryFinder`](https://python-all.ru/3.5/library/importlib.html#importlib.abc.PathEntryFinder).10931094**перехватчик элемента пути**10951096Вызываемый объект из списка10971098`sys.path_hook`10991100, который возвращает11011102[поисковик элемента пути](https://python-all.ru/3.5/glossary.html#term-path-entry-finder)11031104, если он умеет находить модули на конкретном11051106[элементе пути](https://python-all.ru/3.5/glossary.html#term-path-entry)11071108.11091110**искатель на основе пути**11111112Один из11131114[поисковиков по мета-пути](https://python-all.ru/3.5/glossary.html#term-meta-path-finder)11151116по умолчанию, который ищет модули в11171118[пути импорта](https://python-all.ru/3.5/glossary.html#term-import-path)11191120.11211122**часть**11231124Набор файлов в одном каталоге (возможно, хранящемся в zip-файле), которые входят в пакет пространства имён, как определено в11251126[**PEP 420**](https://python-all.ru/3.5/glossary.html)11271128.11291130**позиционный аргумент**11311132См.11331134[аргумент](https://python-all.ru/3.5/glossary.html#term-argument)11351136.11371138**экспериментальный API**11391140Временный API – это API, который намеренно исключён из гарантий обратной совместимости стандартной библиотеки. Хотя серьёзные изменения таких интерфейсов не ожидаются, пока они помечены как временные, возможны несовместимые с предыдущими версиями изменения (вплоть до удаления интерфейса), если основные разработчики сочтут это необходимым. Такие изменения не будут вноситься без веской причины – они произойдут только в случае обнаружения серьёзных фундаментальных недостатков, которые были упущены до включения API.11411142Даже для временных API несовместимые с предыдущими версиями изменения рассматриваются как «крайняя мера» – по-прежнему будут предприниматься все попытки найти обратно совместимое решение для любых выявленных проблем.11431144Этот процесс позволяет стандартной библиотеке продолжать развиваться со временем, не закрепляя проблемные проектные ошибки на длительные периоды времени. Подробнее см. [**PEP 411**](https://python-all.ru/3.5/glossary.html).11451146**экспериментальный пакет**11471148См.11491150[временный API](https://python-all.ru/3.5/glossary.html#term-provisional-api)11511152.11531154**Python 3000**11551156Прозвище для линейки релизов Python 3.x (придуманное давно, когда выход версии 3 был чем-то из далёкого будущего). Также сокращённо называется «Py3k».11571158**Питоничный**11591160Идея или фрагмент кода, который строго следует наиболее распространённым идиомам языка Python, а не реализует код с использованием концепций, общих для других языков. Например, распространённая идиома в Python – цикл по всем элементам итерируемого объекта с помощью оператора [`for`](https://python-all.ru/3.5/reference/compound_stmts.html#for). Многие другие языки не имеют такой конструкции, поэтому люди, незнакомые с Python, иногда используют вместо этого числовой счётчик:11611162```python1163for i in range(len(food)):1164    print(food[i])1165```11661167В отличие от более чистого, питоничного метода:11681169```python1170for piece in food:1171    print(piece)1172```11731174**полное имя**11751176Точечное имя, показывающее «путь» от глобальной области видимости модуля к классу, функции или методу, определённым в этом модуле, как определено в [**PEP 3155**](https://python-all.ru/3.5/glossary.html). Для функций и классов верхнего уровня квалифицированное имя совпадает с именем объекта:11771178```python1179>>> class C:1180...     class D:1181...         def meth(self):1182...             pass1183...1184>>> C.__qualname__1185'C'1186>>> C.D.__qualname__1187'C.D'1188>>> C.D.meth.__qualname__1189'C.D.meth'1190```11911192При использовании для ссылки на модули *полностью квалифицированное имя* означает полный точечный путь к модулю, включая любые родительские пакеты, например `email.mime.text`:11931194```python1195>>> import email.mime.text1196>>> email.mime.text.__name__1197'email.mime.text'1198```11991200**счётчик ссылок**12011202Количество ссылок на объект. Когда счётчик ссылок объекта падает до нуля, объект освобождается. Подсчёт ссылок обычно невидим для кода Python, но является ключевым элементом реализации12031204[CPython](https://python-all.ru/3.5/glossary.html#term-cpython)12051206. Модуль12071208[`sys`](https://python-all.ru/3.5/library/sys.html#module-sys)12091210определяет функцию12111212[`getrefcount()`](https://python-all.ru/3.5/library/sys.html#sys.getrefcount)12131214, которую программисты могут вызывать для получения счётчика ссылок для конкретного объекта.12151216**обычный пакет**12171218Традиционный [пакет](https://python-all.ru/3.5/glossary.html#term-package), например каталог, содержащий файл `__init__.py`.12191220См. также [пространство имён пакета](https://python-all.ru/3.5/glossary.html#term-namespace-package).12211222**slots**12231224Объявление внутри класса, которое экономит память, заранее выделяя место для атрибутов экземпляра и устраняя словари экземпляров. Хотя этот метод популярен, его правильное применение требует некоторой аккуратности, и его лучше использовать только в редких случаях, когда в приложении с критичной памятью создаётся большое количество экземпляров.12251226**последовательность**12271228[Итерируемый объект](https://python-all.ru/3.5/glossary.html#term-iterable), который поддерживает эффективный доступ к элементам по целочисленным индексам через специальный метод [`__getitem__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__getitem__) и определяет метод [`__len__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__len__), возвращающий длину последовательности. Некоторые встроенные типы последовательностей: [`list`](https://python-all.ru/3.5/library/stdtypes.html#list), [`str`](https://python-all.ru/3.5/library/stdtypes.html#str), [`tuple`](https://python-all.ru/3.5/library/stdtypes.html#tuple) и [`bytes`](https://python-all.ru/3.5/library/functions.html#bytes). Обратите внимание, что [`dict`](https://python-all.ru/3.5/library/stdtypes.html#dict) также поддерживает [`__getitem__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__getitem__) и [`__len__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__len__), но считается отображением, а не последовательностью, так как поиск использует произвольные [неизменяемые](https://python-all.ru/3.5/glossary.html#term-immutable) ключи, а не целые числа.12291230Абстрактный базовый класс [`collections.abc.Sequence`](https://python-all.ru/3.5/library/collections.abc.html#collections.abc.Sequence) определяет гораздо более богатый интерфейс, выходящий за рамки простых [`__getitem__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__getitem__) и [`__len__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__len__), добавляя `count()`, `index()`, [`__contains__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__contains__) и [`__reversed__()`](https://python-all.ru/3.5/reference/datamodel.html#object.__reversed__). Типы, реализующие этот расширенный интерфейс, могут быть явно зарегистрированы с помощью `register()`.12311232**одиночная диспетчеризация**12331234A form of12351236[generic function](https://python-all.ru/3.5/glossary.html#term-generic-function)12371238dispatch where the implementation is chosen based on the type of a single argument.12391240**срез**12411242Объект, обычно содержащий часть12431244[последовательности](https://python-all.ru/3.5/glossary.html#term-sequence)12451246. Срез создается с помощью индексации,12471248`[]`12491250с двоеточиями между числами, когда указано несколько, как в12511252`variable_name[1:3:5]`12531254. Квадратные скобки (индексация) внутри используют объекты12551256[`slice`](https://python-all.ru/3.5/library/functions.html#slice)12571258.12591260**специальный метод**12611262A 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 in12631264[Special method names](https://python-all.ru/3.5/reference/datamodel.html#specialnames)12651266.12671268**инструкция**12691270A statement is part of a suite (a “block” of code). A statement is either an12711272[expression](https://python-all.ru/3.5/glossary.html#term-expression)12731274or one of several constructs with a keyword, such as12751276[`if`](https://python-all.ru/3.5/reference/compound_stmts.html#if)12771278,12791280[`while`](https://python-all.ru/3.5/reference/compound_stmts.html#while)12811282or12831284[`for`](https://python-all.ru/3.5/reference/compound_stmts.html#for)12851286.12871288**Структурированная последовательность**12891290Кортеж с именованными элементами. Структурные последовательности предоставляют интерфейс, похожий на12911292[именованный кортеж](https://python-all.ru/3.5/glossary.html#term-named-tuple)12931294в том, что элементы могут быть доступны либо по индексу, либо как атрибут. Однако у них нет методов именованных кортежей, таких как12951296[`_make()`](https://python-all.ru/3.5/library/collections.html#collections.somenamedtuple._make)12971298или12991300[`_asdict()`](https://python-all.ru/3.5/library/collections.html#collections.somenamedtuple._asdict)13011302. Примеры структурных последовательностей включают13031304[`sys.float_info`](https://python-all.ru/3.5/library/sys.html#sys.float_info)13051306и возвращаемое значение13071308[`os.stat()`](https://python-all.ru/3.5/library/os.html#os.stat)13091310.13111312**кодировка текста**13131314Кодек, который кодирует строки Unicode в байты.13151316**текстовый файл**13171318[Объект файла](https://python-all.ru/3.5/glossary.html#term-file-object), способный читать и записывать объекты [`str`](https://python-all.ru/3.5/library/stdtypes.html#str). Часто текстовый файл на самом деле обращается к байт-ориентированному потоку данных и автоматически обрабатывает [кодировку текста](https://python-all.ru/3.5/glossary.html#term-text-encoding). Примеры текстовых файлов: файлы, открытые в текстовом режиме (`'r'` или `'w'`), [`sys.stdin`](https://python-all.ru/3.5/library/sys.html#sys.stdin), [`sys.stdout`](https://python-all.ru/3.5/library/sys.html#sys.stdout) и экземпляры [`io.StringIO`](https://python-all.ru/3.5/library/io.html#io.StringIO).13191320> **См. также**1321>1322> [Двоичный файл](https://python-all.ru/3.5/glossary.html#term-binary-file) читает и записывает объекты [`bytes`](https://python-all.ru/3.5/library/functions.html#bytes).13231324**строка в тройных кавычках**13251326Строка, ограниченная тремя экземплярами кавычек (”) или апострофов (‘). Хотя они не предоставляют никакой функциональности, недоступной в строках с одинарными кавычками, они полезны по ряду причин. Они позволяют включать неэкранированные одинарные и двойные кавычки внутри строки и могут занимать несколько строк без использования символа продолжения, что делает их особенно полезными при написании докстрингов.13271328**тип**13291330Тип объекта Python определяет, что это за объект; каждый объект имеет тип. Тип объекта доступен как его атрибут13311332[`__class__`](https://python-all.ru/3.5/library/stdtypes.html#instance.__class__)13331334или может быть получен с помощью13351336`type(obj)`13371338.13391340**универсальные символы новой строки**13411342Способ интерпретации текстовых потоков, при котором все следующие символы распознаются как конец строки: соглашение Unix о конце строки13431344`'\n'`13451346, соглашение Windows13471348`'\r\n'`13491350и старое соглашение Macintosh13511352`'\r'`13531354. См.13551356[**PEP 278**](https://python-all.ru/3.5/glossary.html)13571358и13591360[**PEP 3116**](https://python-all.ru/3.5/glossary.html)13611362, а также13631364[`bytes.splitlines()`](https://python-all.ru/3.5/library/stdtypes.html#bytes.splitlines)13651366для дополнительного применения.13671368**виртуальное окружение**13691370Кооперативно изолированная среда выполнения, которая позволяет пользователям Python и приложениям устанавливать и обновлять пакеты распространения Python, не влияя на поведение других приложений Python, запущенных в той же системе.13711372См. также [pyvenv – создание виртуальных окружений](https://python-all.ru/3.5/using/scripts.html#scripts-pyvenv).13731374**виртуальная машина**13751376Компьютер, полностью определённый в программном обеспечении. Виртуальная машина Python выполняет13771378[байт-код](https://python-all.ru/3.5/glossary.html#term-bytecode)13791380, генерируемый компилятором байт-кода.13811382**Дзен Python**13831384Перечень принципов проектирования и философии Python, полезных для понимания и использования языка. Этот перечень можно найти, введя “13851386`import this`13871388” в интерактивном приглашении.1389