# Глосарій

`>>>`

  The default Python prompt of the interactive shell. Often seen for code examples which can be executed interactively in the interpreter.

`...`

  Може посилатися на:

  - The default Python prompt of the interactive shell when entering the code for an indented code block, when within a pair of matching left and right delimiters (parentheses, square brackets, curly braces or triple quotes), or after specifying a decorator.

  - Вбудована константа `Ellipsis`.

2to3

  A tool that tries to convert Python 2.x code to Python 3.x code by handling most of the incompatibilities which can be detected by parsing the source and traversing the parse tree.

  2to3 is available in the standard library as `lib2to3`; a standalone entry point is provided as `Tools/scripts/2to3`. See 2to3 — Automated Python 2 to 3 code translation.

абстрактний базовий клас

  Абстрактні базові класи доповнюють duck-typing, надаючи спосіб для визначення інтерфейсів, коли інші методи, такі як `hasattr()`, були б незручними або дещо неправильними (наприклад, з магічними методами). ABC вводить віртуальні підкласи, що є класами, які не успадковуються від класу, але все ще можуть розпізнватися за допомогою `isinstance()` та `issubclass()`; дивіться документацію модуля `abc`. Python має багато вбудованх ABC для різних структур(у модулі `collections.abc`), чисел (у модулі `numbers`), потоків (у модулі `io`) , шукачів імпортів і завантажувачів (у модулі `importlib.abc`). Ви можете створювати власні азбуки за допомогою модуля `abc`.

анотація

  Мітка, пов’язана зі змінною, атрибутом класу або параметром функції чи результатом функції, застосовується за конвенцією як type hint.

  Анотації локальних змінних недоступні під час виконання, але анотації глобальних змінних, атрибутів класів і функцій зберігаються в спеціальному атрибуті `__annotations__` модулів, класів і функцій відповідно.

  Перегляньте variable annotation, function annotation, PEP 484 та PEP 526, які описують цю функціональність. Також перегляньте Рекомендації щодо анотацій, щоб дізнатися про найкращі практики роботи з анотаціями.

аргумент

  Значення, яке передається function (або method) під час виклику функції. Існує два види аргументів:

  - keyword argument: аргумент, якому передує ідентифікатор (наприклад, `name=`) під час виклику функції або передається як значення в словнику перед яким `**`. Наприклад, `3` і `5` є ключовими аргументами в наступних викликах `complex()`:

        complex(real=3, imag=5)
        complex(**{'real': 3, 'imag': 5})

  - positional argument: аргумент, який не є аргументом ключового слова. Позиційні аргументи можуть з’являтися на початку списку аргументів і/або передаватися як елементи iterable, яким передує `*`. Наприклад, `3` і `5` є позиційними аргументами в наступних викликах:

        complex(3, 5)
        complex(*(3, 5))

  Аргументи призначаються названим локальним змінним у тілі функції. Перегляньте розділ Дзвінки для правил, що регулюють це призначення. Синтаксично будь-який вираз можна використовувати для представлення аргументу; обчислене значення присвоюється локальній змінній.

  Дивіться також parameter глосарій, питання FAQ про різницю між аргументами та параметрами, і PEP 362.

менеджер асинхронного контексту

  Об’єкт, що контролює оточення, вказаний у інструкції `async with` визначенням методів `__aenter__()` і `__aexit__()`. Запроваджено у PEP 492.

асинхронний генератор

  Функція, яка повертає asynchronous generator iterator. Це виглядає як функція співпрограми, визначена за допомогою `async def`, за винятком того, що вона містить вирази `yield` для створення серії значень, які можна використовувати в циклі `async for`.

  Зазвичай відноситься до функції асинхронного генератора, але в деяких контекстах може посилатися на ітератор асинхронного генератора. У випадках, коли передбачуване значення не є зрозумілим, використання повних термінів дозволяє уникнути двозначності.

  Функція асинхронного генератора може містити вирази `await`, а також оператори `async for` і `async with`.

ітератор асинхронного генератора

  Об’єкт, створений функцією asynchronous generator.

  Це асинхронний ітератор, який при виклику за допомогою методу `__anext__()` повертає очікуваний об’єкт, який виконає тіло функції асинхронного генератора до наступного виразу `yield`.

  Each `yield` temporarily suspends processing, remembering the location execution state (including local variables and pending try-statements). When the asynchronous generator iterator effectively resumes with another awaitable returned by `__anext__()`, it picks up where it left off. See PEP 492 and PEP 525.

асинхронний ітерований

  Об’єкт, який можна використовувати в інструкції `async for`. Повинен повертати an асинхронний ітератор своїм методом `__aiter__()` . Запроваджено у PEP 492.

асинхронний ітератор

  Об’єкт, який реалізує методи `__aiter__()` та `__anext__()`. `__anext__()` має повертати очікуваний об’єкт. `async for` обчислює очікувані об’єкти, повернуті методом асинхронноо ітератора `__anext__()`, доки він не створює виняток `StopAsyncIteration`. Запроваджено PEP 492.

атрибут

  A value associated with an object which is usually referenced by name using dotted expressions. For example, if an object o has an attribute a it would be referenced as o.a.

  It is possible to give an object an attribute whose name is not an identifier as defined by Ідентифікатори та ключові слова, for example using `setattr()`, if the object allows it. Such an attribute will not be accessible using a dotted expression, and would instead need to be retrieved with `getattr()`.

очікуваний

  An object that can be used in an `await` expression. Can be a coroutine or an object with an `__await__()` method. See also PEP 492.

BDFL

  Доброзичливий диктатор на все життя (BDFL - Benevolent Dictator For Life), також відомий як Гвідо ван Россум, творець Python.

бінарний файл

  A file object able to read and write bytes-like objects. Examples of binary files are files opened in binary mode (`'rb'`, `'wb'` or `'rb+'`), `sys.stdin.buffer`, `sys.stdout.buffer`, and instances of `io.BytesIO` and `gzip.GzipFile`.

  Дивіться також text file для об’єкта файлу, здатного читати та записувати об’єкти `str`.

запозичене посилання

  In Python’s C API, a borrowed reference is a reference to an object, where the code using the object does not own the reference. It becomes a dangling pointer if the object is destroyed. For example, a garbage collection can remove the last strong reference to the object and so destroy it.

  Виклик `Py_INCREF()` для borrowed reference рекомендовано для перетворення його на strong reference на місці, за винятком випадків, коли об’єкт не можна знищити до останнього використання запозиченого посилання. Функцію `Py_NewRef()` можна використати для створення нового strong reference.

байтоподібний об’єкт

  Об’єкт, який підтримує Буферний протокол і може експортувати буфер C-contiguous. Це включає всі об’єкти `bytes`, `bytearray` і `array.array`, а також багато поширених об’єктів `memoryview`. Байтоподібні об’єкти можна використовувати для різних операцій, які працюють з двійковими даними; вони включають стиснення, збереження у бінарний файл і надсилання через сокет.

  Для деяких операцій двійкові дані повинні бути змінними. У документації вони часто називаються «байтоподібними об’єктами читання-запису». Приклади змінних буферних об’єктів включають `bytearray` і `memoryview` `bytearray`. Інші операції вимагають, щоб двійкові дані зберігалися в незмінних об’єктах («байтоподібні об’єкти лише для читання»); прикладами таких є `bytes` і `memoryview` об’єкта `bytes`.

байт-код

  Вихідний код Python компілюється в байт-код, внутрішнє представлення програми Python в інтерпретаторі CPython. Байт-код також кешується у файлах `.pyc`, тому виконання того самого файлу відбувається швидше вдруге (можна уникнути перекомпіляції з вихідного коду в байт-код). Кажуть, що ця «проміжна мова» працює на virtual machine, яка виконує машинний код, що відповідає кожному байт-коду. Зауважте, що байт-коди не повинні працювати між різними віртуальними машинами Python, а також бути стабільними між випусками Python.

  Список інструкцій байт-коду можна знайти в документації для the dis module.

викликний

  A callable is an object that can be called, possibly with a set of arguments (see argument), with the following syntax:

      callable(argument1, argument2, argumentN)

  A function, and by extension a method, is a callable. An instance of a class that implements the `__call__()` method is also a callable.

зворотній виклик

  Функція підпрограми, яка передається як аргумент для виконання в певний момент у майбутньому.

клас

  Шаблон для створення користувальницьких об’єктів. Визначення класу зазвичай містять визначення методів, які працюють над екземплярами класу.

змінна класу

  Змінна, визначена в класі та призначена для зміни лише на рівні класу (тобто не в екземплярі класу).

комплексне число

  Розширення відомої дійсної системи числення, у якій усі числа виражаються як сума дійсної та уявної частин. Уявні числа — це дійсні кратні уявної одиниці (квадратного кореня з `-1`), які часто пишуться `i` в математиці або `j` в інженерії. Python має вбудовану підтримку комплексних чисел, які записуються з використанням цієї останньої нотації; уявна частина записується з суфіксом `j`, наприклад, `3+1j`. Щоб отримати доступ до комплексних еквівалентів модуля `math`, використовуйте `cmath`. Використання комплексних чисел є досить просунутою математичною функцією. Якщо ви не усвідомлюєте потреби в них, майже впевнено, що можете спокійно їх ігнорувати.

контекстний менеджер

  An object which controls the environment seen in a `with` statement by defining `__enter__()` and `__exit__()` methods. See PEP 343.

контекстна змінна

  A variable which can have different values depending on its context. This is similar to Thread-Local Storage in which each execution thread may have a different value for a variable. However, with context variables, there may be several contexts in one execution thread and the main usage for context variables is to keep track of variables in concurrent asynchronous tasks. See `contextvars`.

суміжний

  Буфер вважається безперервним, якщо він C-суміжний або Fortran безперервний. Нульвимірні буфери є суміжними на C і Fortran. В одновимірних масивах елементи повинні розташовуватися в пам’яті поруч один з одним у порядку зростання індексів, починаючи з нуля. У багатовимірних C-суміжних масивах останній індекс змінюється найшвидше під час відвідування елементів у порядку адреси пам’яті. Однак у безперервних масивах Fortran перший індекс змінюється найшвидше.

співпрограма

  Співпрограми є більш узагальненою формою підпрограм. Підпрограми вводяться в одній точці і виходять з іншої. У співпрограми можна ввійти, вийти з них і відновити їх у багатьох різних точках. Їх можна реалізувати за допомогою оператора `async def`. Дивіться також PEP 492.

функція співпрограми

  Функція, яка повертає об’єкт coroutine. Функція співпрограми може бути визначена оператором `async def` і може містити ключові слова `await`, `async for` і `async with`. Їх представив PEP 492.

CPython

  Канонічна реалізація мови програмування Python, яка розповсюджується на python.org. Термін «CPython» використовується, коли необхідно відрізнити цю реалізацію від інших, таких як Jython або IronPython.

декоратор

  Функція, що повертає іншу функцію, зазвичай застосовується як перетворення функції за допомогою синтаксису `@wrapper`. Типовими прикладами для декораторів є `classmethod()` і `staticmethod()`.

  Синтаксис декоратора є просто синтаксичним цукром, наступні два визначення функції семантично еквівалентні:

      def f(arg):
          ...
      f = staticmethod(f)

      @staticmethod
      def f(arg):
          ...

  Така сама концепція існує для класів, але використовується там рідше. Перегляньте документацію щодо визначення функцій та визначення класів, щоб дізнатися більше про декоратори.

дескриптор

  Any object which defines the methods `__get__()`, `__set__()`, or `__delete__()`. When a class attribute is a descriptor, its special binding behavior is triggered upon attribute lookup. Normally, using a.b to get, set or delete an attribute looks up the object named b in the class dictionary for a, but if b is a descriptor, the respective descriptor method gets called. Understanding descriptors is a key to a deep understanding of Python because they are the basis for many features including functions, methods, properties, class methods, static methods, and reference to super classes.

  Для отримання додаткової інформації про методи дескрипторів див. Реалізація дескрипторів або Посібник з використання дескрипторів.

словник

  An associative array, where arbitrary keys are mapped to values. The keys can be any object with `__hash__()` and `__eq__()` methods. Called a hash in Perl.

dictionary comprehension

  Компактний спосіб обробки всіх або частини елементів у ітерації та повернення словника з результатами. `results = {n: n ** 2 for n in range(10)}` генерує словник, що містить ключ `n`, зіставлений зі значенням `n ** 2`. Дивіться Відображення списків, наборів і словників.

перегляд словника

  Об’єкти, що повертаються з `dict.keys()`, `dict.values()` і `dict.items()`, називаються представленнями словника. Вони забезпечують динамічний перегляд словникових статей, що означає, що коли словник змінюється, перегляд відображає ці зміни. Щоб змусити перегляд словника стати повним списком, використовуйте `list(dictview)`. Перегляньте Об’єкти перегляду словника.

рядок документації

  A string literal which appears as the first expression in a class, function or module. While ignored when the suite is executed, it is recognized by the compiler and put into the `__doc__` attribute of the enclosing class, function or module. Since it is available via introspection, it is the canonical place for documentation of the object.

Качина типізація

  Стиль програмування, який не дивиться на тип об’єкта, щоб визначити, чи має він правильний інтерфейс; замість цього метод або атрибут просто викликається або використовується («Якщо він схожий на качку і крякає як качка, це має бути качка».) Підкреслюючи інтерфейси, а не конкретні типи, добре розроблений код покращує свою гнучкість, дозволяючи поліморфне заміщення. Duck-введення дозволяє уникнути тестів з використанням `type()` або `isinstance()`. (Однак зауважте, що качиний тип може бути доповнений абстрактними базовими класами.) Замість цього зазвичай використовуються `hasattr()` тести або EAFP програмування.

EAFP

  Легше попросити вибачення, ніж дозволу (Easier to ask for forgiveness than permission). Цей поширений стиль кодування Python припускає існування дійсних ключів або атрибутів і перехоплює винятки, якщо припущення виявиться хибним. Цей чистий і швидкий стиль характеризується наявністю багатьох операторів `try` і `except`. Техніка контрастує зі стилем LBYL, поширеним у багатьох інших мовах, таких як C.

вираз

  Частина синтаксису, яка може бути оцінена до певного значення. Іншими словами, вираз — це сукупність елементів виразу, таких як літерали, імена, доступ до атрибутів, оператори або виклики функцій, які повертають значення. На відміну від багатьох інших мов, не всі мовні конструкції є виразами. Існують також statements, які не можна використовувати як вирази, наприклад `while`. Присвоєння також є операторами, а не виразами.

модуль розширення

  Модуль, написаний мовою C або C++, який використовує C API Python для взаємодії з ядром і кодом користувача.

f-рядок

  Рядкові літерали з префіксом `'f'` або `'F'` зазвичай називаються «f-рядками», що є скороченням від форматованих рядкових літералів. Дивіться також PEP 498.

файловий об’єкт

  An object exposing a file-oriented API (with methods such as `read()` or `write()`) to an underlying resource. Depending on the way it was created, a file object can mediate access to a real on-disk file or to another type of storage or communication device (for example standard input/output, in-memory buffers, sockets, pipes, etc.). File objects are also called file-like objects or streams.

  Фактично існує три категорії файлових об’єктів: необроблені бінарні файли, буферизовані бінарні файли і текстові файли. Їхні інтерфейси визначені в модулі `io`. Канонічний спосіб створення файлового об’єкта – це використання функції `open()`.

файлоподібний об’єкт

  Синонім file object.

кодування файлової системи та обробник помилок

  Кодування та обробник помилок, які використовуються Python для декодування байтів з операційної системи та кодування Unicode до операційної системи.

  Кодування файлової системи має гарантувати успішне декодування всіх байтів нижче 128. Якщо кодування файлової системи не забезпечує цю гарантію, функції API можуть викликати `UnicodeError`.

  Функції `sys.getfilesystemencoding()` і `sys.getfilesystemencodeerrors()` можна використовувати для отримання кодування файлової системи та обробника помилок.

  filesystem encoding and error handler налаштовуються під час запуску Python за допомогою функції `PyConfig_Read()`: див. `filesystem_encoding` і `filesystem_errors` члени `PyConfig`.

  Дивіться також locale encoding.

шукач

  Об’єкт, який намагається знайти loader для модуля, який імпортується.

  Since Python 3.3, there are two types of finder: meta path finders for use with `sys.meta_path`, and path entry finders for use with `sys.path_hooks`.

  See PEP 302, PEP 420 and PEP 451 for much more detail.

поділ поверху

  Математичне ділення, яке округлюється до найближчого цілого числа. Оператор поділу підлоги – `//`. Наприклад, вираз `11 // 4` обчислюється як `2` на відміну від `2,75`, яке повертає float true division. Зауважте, що `(-11) // 4` є `-3`, тому що це `-2,75`, округлене униз. Дивіться PEP 238.

функція

  Серія операторів, які повертають певне значення абоненту. Йому також можна передати нуль або більше аргументів, які можуть бути використані під час виконання тіла. Дивіться також parameter, method і розділ Визначення функцій.

анотація функції

  annotation параметра функції або значення, що повертається.

  Анотації функцій зазвичай використовуються для підказок типу: наприклад, ця функція має приймати два аргументи `int` і також має повертати значення `int`:

      def sum_two_numbers(a: int, b: int) -> int:
         return a + b

  Синтаксис анотації функції пояснюється в розділі Визначення функцій.

  Див. variable annotation і PEP 484, які описують цю функціональність. Також перегляньте Рекомендації щодо анотацій, щоб дізнатися про найкращі практики роботи з анотаціями.

__future__

  інструкція future, `from __future__ import <feature>`, вказує компілятору скомпілювати поточний модуль, використовуючи синтаксис або семантику, які стануть стандартними в майбутньому випуску Python. Модуль `__future__` документує можливі значення feature. Імпортувавши цей модуль та оцінивши його змінні, ви можете побачити, коли нова функція була вперше додана до мови та коли вона стане (або стала) типовою:

      >>> import __future__
      >>> __future__.division
      _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)

збір сміття

  Процес звільнення пам’яті, коли вона більше не використовується. Python виконує збирання сміття за допомогою підрахунку посилань і циклічного збирача сміття, здатного виявляти та розривати цикли посилань. Збирачем сміття можна керувати за допомогою модуля `gc`.

генератор

  Функція, яка повертає generator iterator. Це виглядає як звичайна функція, за винятком того, що вона містить вирази `yield` для створення серії значень, які можна використовувати в циклі for або які можна отримати по одному за допомогою функції `next()`.

  Зазвичай відноситься до функції-генератора, але в деяких контекстах може посилатися на ітератор-генератор. У випадках, коли передбачуване значення не є зрозумілим, використання повних термінів дозволяє уникнути двозначності.

ітератор генератора

  Об’єкт, створений функцією generator.

  Each `yield` temporarily suspends processing, remembering the location execution state (including local variables and pending try-statements). When the generator iterator resumes, it picks up where it left off (in contrast to functions which start fresh on every invocation).

генераторний вираз

  An expression that returns an iterator. It looks like a normal expression followed by a `for` clause defining a loop variable, range, and an optional `if` clause. The combined expression generates values for an enclosing function:

      >>> sum(i*i for i in range(10))         # sum of squares 0, 1, 4, ... 81
      285

родова функція

  Функція, що складається з кількох функцій, які реалізують ту саму операцію для різних типів. Яку реалізацію слід використовувати під час виклику, визначається алгоритмом диспетчеризації.

  Дивіться також запис глосарію single dispatch, декоратор `functools.singledispatch()` і PEP 443.

родовий тип

  type, який можна параметризувати; зазвичай це клас-контейнер, наприклад `list` або `dict`. Використовується для підказок типу та анотацій.

  Для отримання додаткової інформації див. загальні типи псевдонімів, PEP 483, PEP 484, PEP 585 і модуль `typing`.

GIL

  Дивіться global interpreter lock.

глобальне блокування інтерпретатора

  Механізм, який використовується інтерпретатором CPython, щоб гарантувати, що лише один потік виконує bytecode Python за раз. Це спрощує реалізацію CPython, роблячи об’єктну модель (включно з критично важливими вбудованими типами, такими як `dict`) неявно захищеною від одночасного доступу. Блокування всього інтерпретатора полегшує багатопотоковість інтерпретатора за рахунок більшої частини паралелізму, який надають багатопроцесорні машини.

  However, some extension modules, either standard or third-party, are designed so as to release the GIL when doing computationally intensive tasks such as compression or hashing. Also, the GIL is always released when doing I/O.

  Past efforts to create a «free-threaded» interpreter (one which locks shared data at a much finer granularity) have not been successful because performance suffered in the common single-processor case. It is believed that overcoming this performance issue would make the implementation much more complicated and therefore costlier to maintain.

на основі хешу pyc

  Файл кешу байт-коду, який використовує хеш, а не час останньої зміни відповідного вихідного файлу для визначення його дійсності. Перегляньте Анулювання кешованого байт-коду.

хешований

  An object is hashable if it has a hash value which never changes during its lifetime (it needs a `__hash__()` method), and can be compared to other objects (it needs an `__eq__()` method). Hashable objects which compare equal must have the same hash value.

  Хешування робить об’єкт придатним для використання як ключ словника та член набору, оскільки ці структури даних використовують хеш-значення внутрішньо.

  Більшість незмінних вбудованих об’єктів Python можна хешувати; змінні контейнери (такі як списки або словники) не є; незмінні контейнери (такі як кортежі та заморожені набори) можна хешувати, лише якщо їх елементи хешуються. Об’єкти, які є екземплярами визначених користувачем класів, хешуються за замовчуванням. Усі вони порівнюються неоднаково (за винятком самих себе), і їх хеш-значення походить від їхнього `id()`.

ПРОСТОЮЧИЙ

  An Integrated Development and Learning Environment for Python. IDLE is a basic editor and interpreter environment which ships with the standard distribution of Python.

незмінний

  Об’єкт із фіксованим значенням. До незмінних об’єктів належать числа, рядки та кортежі. Такий об’єкт не можна змінити. Якщо потрібно зберегти інше значення, потрібно створити новий об’єкт. Вони відіграють важливу роль у місцях, де потрібне постійне хеш-значення, наприклад, як ключ у словнику.

шлях імпорту

  Список розташувань (або записів шляху), у яких path based finder шукає модулі для імпорту. Під час імпорту цей список розташувань зазвичай надходить із `sys.path`, але для підпакетів він також може надходити з атрибута `__path__` батьківського пакета.

імпортування

  Процес, за допомогою якого код Python в одному модулі стає доступним для коду Python в іншому модулі.

імпортер

  Об’єкт, який знаходить і завантажує модуль; як об’єкт finder, так і loader.

інтерактивний

  Python has an interactive interpreter which means you can enter statements and expressions at the interpreter prompt, immediately execute them and see their results. Just launch `python` with no arguments (possibly by selecting it from your computer’s main menu). It is a very powerful way to test out new ideas or inspect modules and packages (remember `help(x)`).

інтерпретований

  Python є інтерпретованою мовою, на відміну від скомпільованої, хоча відмінність може бути розмитою через наявність компілятора байт-коду. Це означає, що вихідні файли можна запускати безпосередньо без явного створення виконуваного файлу, який потім запускається. Інтерпретовані мови зазвичай мають коротший цикл розробки/налагодження, ніж скомпільовані, хоча їхні програми також працюють повільніше. Дивіться також interactive.

вимкнення перекладача

  Коли його попросять завершити роботу, інтерпретатор Python переходить у спеціальну фазу, де він поступово звільняє всі виділені ресурси, такі як модулі та різні критичні внутрішні структури. Він також робить кілька викликів до збирача сміття. Це може ініціювати виконання коду в визначених користувачем деструкторах або зворотних викликах weakref. Код, який виконується під час фази завершення роботи, може зіткнутися з різними винятками, оскільки ресурси, на які він покладається, можуть більше не функціонувати (поширеними прикладами є бібліотечні модулі або механізм попереджень).

  Основною причиною вимкнення інтерпретатора є завершення виконання модуля `__main__` або сценарію, який виконується.

ітерований

  An object capable of returning its members one at a time. Examples of iterables include all sequence types (such as `list`, `str`, and `tuple`) and some non-sequence types like `dict`, file objects, and objects of any classes you define with an `__iter__()` method or with a `__getitem__()` method that implements sequence semantics.

  Iterables can be used in a `for` loop and in many other places where a sequence is needed (`zip()`, `map()`, …). When an iterable object is passed as an argument to the built-in function `iter()`, it returns an iterator for the object. This iterator is good for one pass over the set of values. When using iterables, it is usually not necessary to call `iter()` or deal with iterator objects yourself. The `for` statement does that automatically for you, creating a temporary unnamed variable to hold the iterator for the duration of the loop. See also iterator, sequence, and generator.

ітератор

  An object representing a stream of data. Repeated calls to the iterator’s `__next__()` method (or passing it to the built-in function `next()`) return successive items in the stream. When no more data are available a `StopIteration` exception is raised instead. At this point, the iterator object is exhausted and any further calls to its `__next__()` method just raise `StopIteration` again. Iterators are required to have an `__iter__()` method that returns the iterator object itself so every iterator is also iterable and may be used in most places where other iterables are accepted. One notable exception is code which attempts multiple iteration passes. A container object (such as a `list`) produces a fresh new iterator each time you pass it to the `iter()` function or use it in a `for` loop. Attempting this with an iterator will just return the same exhausted iterator object used in the previous iteration pass, making it appear like an empty container.

  Більше інформації можна знайти в Типи ітераторів.

  Деталі реалізації CPython: CPython does not consistently apply the requirement that an iterator define `__iter__()`.

ключова функція

  Ключова функція або функція зіставлення — це виклик, який повертає значення, яке використовується для сортування або впорядкування. Наприклад, `locale.strxfrm()` використовується для створення ключа сортування, який враховує умови сортування для певної мови.

  Кілька інструментів у Python приймають ключові функції для керування тим, як елементи впорядковуються чи групуються. Серед них `min()`, `max()`, `sorted()`, `list.sort()`, `heapq.merge()`, `heapq.nsmallest()`, `heapq.nlargest()` і `itertools.groupby()`.

  There are several ways to create a key function. For example. the `str.lower()` method can serve as a key function for case insensitive sorts. Alternatively, a key function can be built from a `lambda` expression such as `lambda r: (r[0], r[2])`. Also, `operator.attrgetter()`, `operator.itemgetter()`, and `operator.methodcaller()` are three key function constructors. See the Sorting HOW TO for examples of how to create and use key functions.

аргумент ключового слова

  Дивіться argument.

лямбда

  Анонімна вбудована функція, що складається з одного expression, який обчислюється під час виклику функції. Синтаксис створення лямбда-функції такий: `лямбда [параметри]: вираз`

LBYL

  Сім разів відміряй, один раз відріж. Цей стиль кодування явно перевіряє попередні умови перед здійсненням викликів або пошуку. Цей стиль контрастує з підходом EAFP і характеризується наявністю багатьох операторів `if`.

  У багатопоточному середовищі підхід LBYL може загрожувати введенням умов змагання між «дивлячим» і «стрибаючим». Наприклад, код `if key in mapping: return mapping[key]` може завершитися помилкою, якщо інший потік видаляє key із mapping після перевірки, але перед пошуком. Цю проблему можна вирішити за допомогою блокувань або використання підходу EAFP.

список

  A built-in Python sequence. Despite its name it is more akin to an array in other languages than to a linked list since access to elements is O(1).

розуміння списку

  Компактний спосіб обробки всіх або частини елементів у послідовності та повернення списку з результатами. `result = ['{:#04x}'.format(x) for x in range(256) if x % 2 == 0]` створює список рядків, що містять парні шістнадцяткові числа (0x..) у діапазон від 0 до 255. Речення `if` є необов’язковим. Якщо опущено, обробляються всі елементи в діапазоні (256).

навантажувач

  An object that loads a module. It must define a method named `load_module()`. A loader is typically returned by a finder. See PEP 302 for details and `importlib.abc.Loader` for an abstract base class.

кодування локалі

  On Unix, it is the encoding of the LC_CTYPE locale. It can be set with `locale.setlocale(locale.LC_CTYPE, new_locale)`.

  On Windows, it is the ANSI code page (ex: `"cp1252"`).

  On Android and VxWorks, Python uses `"utf-8"` as the locale encoding.

  `locale.getencoding()` can be used to get the locale encoding.

  See also the filesystem encoding and error handler.

магічний метод

  Неофіційний синонім слова special method.

відображення

  A container object that supports arbitrary key lookups and implements the methods specified in the `collections.abc.Mapping` or `collections.abc.MutableMapping` abstract base classes. Examples include `dict`, `collections.defaultdict`, `collections.OrderedDict` and `collections.Counter`.

мета-шлях пошуку

  finder, що повертається в результаті пошуку `sys.meta_path`. Засоби пошуку меташляхів пов’язані з засобами пошуку записів шляху, але відрізняються від них.

  Перегляньте `importlib.abc.MetaPathFinder` методи, які реалізують засоби пошуку меташляхів.

метаклас

  Клас класу. Визначення класу створюють назву класу, словник класу та список базових класів. Метаклас відповідає за отримання цих трьох аргументів і створення класу. Більшість об’єктно-орієнтованих мов програмування забезпечують реалізацію за замовчуванням. Що робить Python особливим, так це те, що можна створювати власні метакласи. Більшості користувачів цей інструмент ніколи не потрібен, але коли виникає потреба, метакласи можуть надати потужні та елегантні рішення. Вони використовувалися для реєстрації доступу до атрибутів, додавання потокової безпеки, відстеження створення об’єктів, реалізації одиночних елементів і багатьох інших завдань.

  Більше інформації можна знайти в Метакласи.

метод

  Функція, яка визначена всередині тіла класу. Якщо викликати його як атрибут примірника цього класу, метод отримає об’єкт примірника як свій перший argument (який зазвичай називається `self`). Див. function і nested scope.

порядок вирішення методу

  Method Resolution Order is the order in which base classes are searched for a member during lookup. See The Python 2.3 Method Resolution Order for details of the algorithm used by the Python interpreter since the 2.3 release.

модуль

  Об’єкт, який є організаційною одиницею коду Python. Модулі мають простір імен, що містить довільні об’єкти Python. Модулі завантажуються в Python за допомогою процесу importing.

  Дивіться також package.

модуль спец

  Простір імен, що містить пов’язану з імпортом інформацію, яка використовується для завантаження модуля. Екземпляр `importlib.machinery.ModuleSpec`.

MRO

  Дивіться method resolution order.

мінливий

  Змінні об’єкти можуть змінювати своє значення, але зберігають свій `id()`. Дивіться також immutable.

іменований кортеж

  Термін «іменований кортеж» застосовується до будь-якого типу або класу, який успадковує кортеж і чиї індексовані елементи також доступні за допомогою іменованих атрибутів. Тип або клас також можуть мати інші особливості.

  Кілька вбудованих типів є іменованими кортежами, включаючи значення, що повертаються `time.localtime()` і `os.stat()`. Інший приклад: `sys.float_info`:

      >>> sys.float_info[1]                   # indexed access
      1024
      >>> sys.float_info.max_exp              # named field access
      1024
      >>> isinstance(sys.float_info, tuple)   # kind of tuple
      True

  Some named tuples are built-in types (such as the above examples). Alternatively, a named tuple can be created from a regular class definition that inherits from `tuple` and that defines named fields. Such a class can be written by hand, or it can be created by inheriting `typing.NamedTuple`, or with the factory function `collections.namedtuple()`. The latter techniques also add some extra methods that may not be found in hand-written or built-in named tuples.

простір імен

  Місце, де зберігається змінна. Простори імен реалізовані як словники. Існують локальні, глобальні та вбудовані простори імен, а також вкладені простори імен в об’єктах (у методах). Простори імен підтримують модульність, запобігаючи конфліктам імен. Наприклад, функції `builtins.open` і `os.open()` відрізняються своїми просторами імен. Простори імен також сприяють читабельності та зручності обслуговування, пояснюючи, який модуль реалізує функцію. Наприклад, написання `random.seed()` або `itertools.islice()` дає зрозуміти, що ці функції реалізовані модулями `random` і `itertools` відповідно.

пакет простору імен

  A PEP 420 package which serves only as a container for subpackages. Namespace packages may have no physical representation, and specifically are not like a regular package because they have no `__init__.py` file.

  Дивіться також module.

вкладена область

  Можливість посилатися на змінну в охоплюючому визначенні. Наприклад, функція, визначена всередині іншої функції, може посилатися на змінні у зовнішній функції. Зауважте, що вкладені області за замовчуванням працюють лише для довідки, а не для призначення. Локальні змінні читають і записують у внутрішній області видимості. Так само глобальні змінні читають і записують у глобальний простір імен. `nonlocal` дозволяє писати у зовнішні області.

клас нового стилю

  Old name for the flavor of classes now used for all class objects. In earlier Python versions, only new-style classes could use Python’s newer, versatile features like `__slots__`, descriptors, properties, `__getattribute__()`, class methods, and static methods.

об’єкт

  Будь-які дані зі станом (атрибути або значення) і визначеною поведінкою (методи). Також остаточний базовий клас будь-якого new-style class.

пакет

  модуль Python, що може містити підмодулі чи, рекурсивно, підпакети. З технічного боку, пакет є модулем Python з атрибутом `__path__`.

  Дивіться також regular package і namespace package.

параметр

  Іменована сутність у визначенні function (або методу), яка визначає argument (або в деяких випадках аргументи), які функція може прийняти. Є п’ять типів параметрів:

  - positional-or-keyword: визначає аргумент, який можна передати позиційно або як аргумент ключового слова. Це тип параметра за замовчуванням, наприклад foo і bar у наступному:

        def func(foo, bar=None): ...

  - positional-only: визначає аргумент, який можна надати лише за позицією. Лише позиційні параметри можна визначити, включивши символ `/` у список параметрів визначення функції після них, наприклад posonly1 і posonly2 у наступному:

        def func(posonly1, posonly2, /, positional_or_keyword): ...

  - keyword-only: визначає аргумент, який можна надати лише за ключовим словом. Параметри, що містять лише ключове слово, можна визначити, включивши один змінний позиційний параметр або голий `*` у список параметрів визначення функції перед ними, наприклад kw_only1 і kw_only2 у наступному:

        def func(arg, *, kw_only1, kw_only2): ...

  - var-positional: вказує, що можна надати довільну послідовність позиційних аргументів (на додаток до будь-яких позиційних аргументів, уже прийнятих іншими параметрами). Такий параметр можна визначити, додавши перед назвою параметра `*`, наприклад args у наступному:

        def func(*args, **kwargs): ...

  - var-keyword: вказує, що можна надати довільну кількість аргументів ключових слів (на додаток до будь-яких аргументів ключових слів, які вже прийняті іншими параметрами). Такий параметр можна визначити, додавши перед назвою параметра `**`, наприклад kwargs у прикладі вище.

  Параметри можуть вказувати як необов’язкові, так і обов’язкові аргументи, а також значення за умовчанням для деяких необов’язкових аргументів.

  Дивіться також argument глосарій, питання FAQ про різницю між аргументами та параметрами, `inspect.Parameter` клас, Визначення функцій розділ та PEP 362.

запис шляху

  Єдине розташування на import path, до якого path based finder звертається, щоб знайти модулі для імпорту.

шукач запису шляху

  finder, що повертається викликом на `sys.path_hooks` (тобто path entry hook), який знає, як знаходити модулі за допомогою path entry.

  Перегляньте `importlib.abc.PathEntryFinder` методи, які реалізують засоби пошуку запису шляху.

гачок входу шляху

  A callable on the `sys.path_hooks` list which returns a path entry finder if it knows how to find modules on a specific path entry.

пошук на основі шляху

  Один із стандартних мета-шляхів пошуку, який шукає import path для модулів.

шляхоподібний об’єкт

  Об’єкт, що представляє шлях до файлової системи. Шляховий об’єкт – це або `str`, або `bytes` об’єкт, що представляє шлях, або об’єкт, що реалізує протокол `os.PathLike`. Об’єкт, який підтримує протокол `os.PathLike`, можна перетворити на шлях файлової системи `str` або `bytes` шляхом виклику функції `os.fspath()`; `os.fsdecode()` і `os.fsencode()` можна використовувати, щоб гарантувати результат `str` або `bytes` відповідно. Представлений PEP 519.

PEP

  Пропозиція вдосконалення Python. PEP — це проектний документ, який надає інформацію спільноті Python або описує нову функцію для Python або його процеси чи середовище. Публічні діячі повинні надавати стислу технічну специфікацію та обґрунтування запропонованих функцій.

  PEP мають бути основними механізмами для пропонування основних нових функцій, для збору інформації спільноти щодо проблеми та для документування проектних рішень, які увійшли в Python. Автор PEP відповідає за формування консенсусу в спільноті та документування особливих думок.

  Дивіться PEP 1.

частина

  Набір файлів в одному каталозі (можливо, збережених у файлі zip), які входять до пакету простору імен, як визначено в PEP 420.

позиційний аргумент

  Дивіться argument.

тимчасовий API

  Попередній API — це той, який був навмисно виключений із гарантій зворотної сумісності стандартної бібліотеки. Хоча суттєвих змін у таких інтерфейсах не очікується, доки вони позначені як тимчасові, зворотні несумісні зміни (аж до видалення інтерфейсу включно) можуть відбутися, якщо розробники ядра вважають це за потрібне. Такі зміни не будуть внесені безоплатно — вони відбудуться лише за умови виявлення серйозних фундаментальних недоліків, які були пропущені до включення API.

  Навіть для тимчасових API зворотні несумісні зміни розглядаються як «вирішення останньої інстанції» — все одно будуть зроблені всі спроби знайти зворотно сумісне вирішення будь-яких виявлених проблем.

  Цей процес дозволяє стандартній бібліотеці продовжувати розвиватися з часом, не блокуючи проблемні помилки проектування протягом тривалих періодів часу. Дивіться PEP 411 для більш детальної інформації.

тимчасовий пакет

  Перегляньте provisional API.

Python 3000

  Псевдонім для рядка випусків Python 3.x (придуманий давно, коли випуск версії 3 був чимось у віддаленому майбутньому). Це також скорочено «Py3k».

Pythonic

  Ідея або фрагмент коду, який точно відповідає найпоширенішим ідіомам мови Python, а не реалізує код за допомогою концепцій, спільних для інших мов. Наприклад, поширена ідіома в Python полягає в тому, щоб перебирати всі елементи ітерованого за допомогою оператора `for`. Багато інших мов не мають такого типу конструкції, тому люди, які не знайомі з Python, іноді замість цього використовують числовий лічильник:

      for i in range(len(food)):
          print(food[i])

  На відміну від очищувача, метод Pythonic:

      for piece in food:
          print(piece)

кваліфіковане ім’я

  Назва з крапками, що вказує «шлях» від глобальної області видимості модуля до класу, функції або методу, визначеного в цьому модулі, як визначено в PEP 3155. Для функцій і класів верхнього рівня кваліфіковане ім’я збігається з ім’ям об’єкта:

      >>> class C:
      ...     class D:
      ...         def meth(self):
      ...             pass
      ...
      >>> C.__qualname__
      'C'
      >>> C.D.__qualname__
      'C.D'
      >>> C.D.meth.__qualname__
      'C.D.meth'

  Коли використовується для позначення модулів, повне ім’я означає весь шлях до модуля, розділений крапками, включаючи будь-які батьківські пакети, напр. `email.mime.text`:

      >>> import email.mime.text
      >>> email.mime.text.__name__
      'email.mime.text'

кількість посилань

  The number of references to an object. When the reference count of an object drops to zero, it is deallocated. Reference counting is generally not visible to Python code, but it is a key element of the CPython implementation. Programmers can call the `sys.getrefcount()` function to return the reference count for a particular object.

звичайний пакет

  Традиційний package, як-от каталог, що містить файл `__init__.py`.

  Дивіться також namespace package.

__slots__

  Оголошення всередині класу, яке економить пам’ять шляхом попереднього оголошення місця для атрибутів екземпляра та видалення словників екземплярів. Незважаючи на те, що ця техніка популярна, її дещо складно застосувати, і її найкраще використовувати для рідкісних випадків, коли в програмі, критичній до пам’яті, є велика кількість екземплярів.

послідовність

  An iterable which supports efficient element access using integer indices via the `__getitem__()` special method and defines a `__len__()` method that returns the length of the sequence. Some built-in sequence types are `list`, `str`, `tuple`, and `bytes`. Note that `dict` also supports `__getitem__()` and `__len__()`, but is considered a mapping rather than a sequence because the lookups use arbitrary immutable keys rather than integers.

  The `collections.abc.Sequence` abstract base class defines a much richer interface that goes beyond just `__getitem__()` and `__len__()`, adding `count()`, `index()`, `__contains__()`, and `__reversed__()`. Types that implement this expanded interface can be registered explicitly using `register()`. For more documentation on sequence methods generally, see Common Sequence Operations.

встановити розуміння

  Компактний спосіб обробки всіх або частини елементів у ітерації та повернення набору з результатами. `results = {c for c in 'abracadabra' if c not in 'abc'}` генерує набір рядків `{'r', 'd'}`. Дивіться Відображення списків, наборів і словників.

єдина відправка

  Форма відправки generic function, де реалізація вибирається на основі типу одного аргументу.

шматочок

  Об’єкт, який зазвичай містить частину sequence. Зріз створюється з використанням нижнього індексу `[]` з двокрапками між числами, якщо вказано кілька, наприклад, `variable_name[1:3:5]`. Нотація в дужках (підрядковому) використовує внутрішньо об’єкти `slice`.

спеціальний метод

  Метод, який неявно викликається Python для виконання певної операції над типом, наприклад додавання. Такі методи мають назви, що починаються і закінчуються подвійним підкресленням. Спеціальні методи описані в Назви спеціальних методів.

заява

  Оператор є частиною набору («блоку» коду). Інструкція є або expression, або однією з кількох конструкцій із ключовим словом, таким як `if`, `while` або `for`.

static type checker

  An external tool that reads Python code and analyzes it, looking for issues such as incorrect types. See also type hints and the `typing` module.

сильна посилання

  In Python’s C API, a strong reference is a reference to an object which is owned by the code holding the reference. The strong reference is taken by calling `Py_INCREF()` when the reference is created and released with `Py_DECREF()` when the reference is deleted.

  Функцію `Py_NewRef()` можна використовувати для створення сильного посилання на об’єкт. Зазвичай функцію `Py_DECREF()` потрібно викликати для сильного посилання перед виходом із області сильного посилання, щоб уникнути витоку одного посилання.

  Дивіться також borrowed reference.

кодування тексту

  Рядок у Python — це послідовність кодових точок Unicode (у діапазоні `U+0000`–`U+10FFFF`). Щоб зберегти або передати рядок, його потрібно серіалізувати як послідовність байтів.

  Серіалізація рядка в послідовність байтів відома як «кодування», а відтворення рядка з послідовності байтів відоме як «декодування».

  Існує безліч різних кодеків серіалізації тексту, які спільно називаються «текстовими кодуваннями».

текстовий файл

  Об’єкт file object, здатний читати та записувати об’єкти `str`. Часто текстовий файл насправді отримує доступ до байт-орієнтованого потоку даних і автоматично обробляє text encoding. Прикладами текстових файлів є файли, відкриті в текстовому режимі (`'r'` або `'w'`), `sys.stdin`, `sys.stdout`, а також екземпляри: `io.StringIO`.

  Дивіться також binary file щодо файлового об’єкта, здатного читати та записувати байтоподібні об’єкти.

рядок із потрійними лапками

  Рядок, обмежений трьома лапками (») або апострофом („). Хоча вони не надають жодної функції, недоступної для рядків із одинарними лапками, вони корисні з кількох причин. Вони дозволяють ви можете включити неекрановані одинарні та подвійні лапки в рядок, і вони можуть охоплювати кілька рядків без використання символу продовження, що робить їх особливо корисними під час написання рядків документів.

тип

  The type of a Python object determines what kind of object it is; every object has a type. An object’s type is accessible as its `__class__` attribute or can be retrieved with `type(obj)`.

псевдонім типу

  Синонім типу, створений шляхом присвоєння типу ідентифікатору.

  Псевдоніми типів корисні для спрощення підказок типу. Наприклад:

      def remove_gray_shades(
              colors: list[tuple[int, int, int]]) -> list[tuple[int, int, int]]:
          pass

  можна зробити більш читабельним таким чином:

      Color = tuple[int, int, int]

      def remove_gray_shades(colors: list[Color]) -> list[Color]:
          pass

  Перегляньте `typing` і PEP 484, які описують цю функцію.

підказка типу

  annotation, яка визначає очікуваний тип для змінної, атрибута класу або параметра функції чи значення, що повертається.

  Підказки типу є необов’язковими і не вимагаються Python, але вони корисні для програм для статичної перевірки типів. Вони також можуть допомогти IDE з завершенням коду та рефакторингом.

  Доступ до підказок типу глобальних змінних, атрибутів класу та функцій, але не локальних змінних, можна отримати за допомогою `typing.get_type_hints()`.

  Перегляньте `typing` і PEP 484, які описують цю функцію.

універсальні символи нового рядка

  Спосіб інтерпретації текстових потоків, у якому все наступне розпізнається як завершення рядка: угода Unix про кінець рядка `'\n'`, угода Windows `'\r\n'`, і стару конвенцію Macintosh `'\r'`. Перегляньте PEP 278 і PEP 3116, а також `bytes.splitlines()` для додаткового використання.

анотація змінної

  annotation змінної або атрибута класу.

  При анотуванні змінної або атрибута класу призначення є необов’язковим:

      class C:
          field: 'annotation'

  Анотації змінних зазвичай використовуються для підказок типу: наприклад, очікується, що ця змінна прийматиме значення `int`:

      count: int = 0

  Синтаксис анотації змінної пояснюється в розділі Анотовані заяви про призначення.

  Перегляньте function annotation, PEP 484 та PEP 526, які описують цю функціональність. Також перегляньте Рекомендації щодо анотацій, щоб дізнатися про найкращі практики роботи з анотаціями.

віртуальне середовище

  Спільно ізольоване середовище виконання, яке дозволяє користувачам і програмам Python встановлювати та оновлювати дистрибутивні пакети Python, не втручаючись у поведінку інших програм Python, що працюють у тій же системі.

  Дивіться також `venv`.

віртуальна машина

  Комп’ютер, повністю визначений програмним забезпеченням. Віртуальна машина Python виконує bytecode, виданий компілятором байт-коду.

Дзен Python

  Перелік принципів дизайну та філософії Python, які допоможуть зрозуміти та використовувати мову. Перелік можна знайти, ввівши «`import this`» в інтерактивному рядку.