# Глосарій

`>>>`

  Запрошення інтерактивної оболонки Python за замовчуванням. Часто використовується у прикладах коду, які можна виконати інтерактивно у інтерпретаторі.

`...`

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

  - Запрошення інтерактивної оболонки Python при введенні блоку коду з відступами, між парою відповідних лівих і правих розділювачів (круглих, квадратних чи фігурних дужок або потрійних лапок), чи після зазначення декоратора.

  - The three dots form of the Ellipsis object.

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

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

annotate function

  A callable that can be called to retrieve the annotations of an object. Annotate functions are usually functions, automatically generated as the `__annotate__` attribute of functions, classes, and modules. Annotate functions are a subset of evaluate functions.

анотація

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

  Annotations of local variables cannot be accessed at runtime, but annotations of global variables, class attributes, and functions can be retrieved by calling `annotationlib.get_annotations()` on modules, classes, and functions, respectively.

  See variable annotation, function annotation, PEP 484, PEP 526, and PEP 649, which describe this functionality. Also see Рекомендації щодо анотацій for best practices on working with annotations.

аргумент

  Значення, яке передається 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`.

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

  An object created by an asynchronous generator function.

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

  Each `yield` temporarily suspends processing, remembering the 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.

atomic operation

  An operation that appears to execute as a single, indivisible step: no other thread can observe it half-done, and its effects become visible all at once. Python does not guarantee that high-level statements are atomic (for example, `x += 1` performs multiple bytecode operations and is not atomic). Atomicity is only guaranteed where explicitly documented. See also race condition and data race.

attached thread state

  A thread state that is active for the current OS thread.

  When a thread state is attached, the OS thread has access to the full Python C API and can safely invoke the bytecode interpreter.

  Unless a function explicitly notes otherwise, attempting to call the C API without an attached thread state will result in a fatal error or undefined behavior. A thread state can be attached and detached explicitly by the user through the C API, or implicitly by the runtime, including during blocking C calls and by the bytecode interpreter in between calls.

  On most builds of Python, having an attached thread state implies that the caller holds the GIL for the current interpreter, so only one OS thread can have an attached thread state at a given moment. In free-threaded builds of Python, threads can concurrently hold an attached thread state, allowing for true parallelism of the bytecode interpreter.

атрибут

  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 Names (identifiers and keywords), 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.

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

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

клас

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

змінна класу

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

closure variable

  A free variable referenced from a nested scope that is defined in an outer scope rather than being resolved at runtime from the globals or builtin namespaces. May be explicitly defined with the `nonlocal` keyword to allow write access, or implicitly defined if the variable is only being read.

  For example, in the `inner` function in the following code, both `x` and `print` are free variables, but only `x` is a closure variable:

      def outer():
          x = 0
          def inner():
              nonlocal x
              x += 1
              print(x)
          return inner

  Due to the `codeobject.co_freevars` attribute (which, despite its name, only includes the names of closure variables rather than listing all referenced free variables), the more general free variable term is sometimes used even when the intended meaning is to refer specifically to closure variables.

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

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

concurrency

  The ability of a computer program to perform multiple tasks at the same time. Python provides libraries for writing programs that make use of different forms of concurrency. `asyncio` is a library for dealing with asynchronous tasks and coroutines. `threading` provides access to operating system threads and `multiprocessing` to operating system processes. Multi-core processors can execute threads and processes on different CPU cores at the same time (see parallelism).

concurrent modification

  When multiple threads modify shared data at the same time. Concurrent modification without proper synchronization can cause race conditions, and might also trigger a data race, data corruption, or both.

context

  This term has different meanings depending on where and how it is used. Some common meanings:

  - The temporary state or environment established by a context manager via a `with` statement.

  - The collection of keyvalue bindings associated with a particular `contextvars.Context` object and accessed via `ContextVar` objects. Also see context variable.

  - A `contextvars.Context` object. Also see current context.

context management protocol

  The `__enter__()` and `__exit__()` methods called by the `with` statement. See PEP 343.

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

  An object which implements the context management protocol and controls the environment seen in a `with` statement. See PEP 343.

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

  A variable whose value depends on which context is the current context. Values are accessed via `contextvars.ContextVar` objects. Context variables are primarily used to isolate state between concurrent asynchronous tasks.

суміжний

  Буфер вважається безперервним, якщо він 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.

current context

  The context (`contextvars.Context` object) that is currently used by `ContextVar` objects to access (get or set) the values of context variables. Each thread has its own current context. Frameworks for executing asynchronous tasks (see `asyncio`) associate each task with a context which becomes the current context whenever the task starts or resumes execution.

cyclic isolate

  A subgroup of one or more objects that reference each other in a reference cycle, but are not referenced by objects outside the group. The goal of the cyclic garbage collector is to identify these groups and break the reference cycles so that the memory can be reclaimed.

data race

  A situation where multiple threads access the same memory location concurrently, at least one of the accesses is a write, and the threads do not use any synchronization to control their access. Data races lead to non-deterministic behavior and can cause data corruption. Proper use of locks and other synchronization primitives prevents data races. Note that data races can only happen in native code, but that native code might be exposed in a Python API. See also race condition and thread-safe.

deadlock

  A situation in which two or more tasks (threads, processes, or coroutines) wait indefinitely for each other to release resources or complete actions, preventing any from making progress. For example, if thread A holds lock 1 and waits for lock 2, while thread B holds lock 2 and waits for lock 1, both threads will wait indefinitely. In Python this often arises from acquiring multiple locks in conflicting orders or from circular join/await dependencies. Deadlocks can be avoided by always acquiring multiple locks in a consistent order. See also lock and reentrant.

декоратор

  Функція, що повертає іншу функцію, зазвичай застосовується як перетворення функції за допомогою синтаксису `@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 програмування.

dunder

  An informal short-hand for «double underscore», used when talking about a special method. For example, `__init__` is often pronounced «dunder init».

EAFP

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

evaluate function

  A function that can be called to evaluate a lazily evaluated attribute of an object, such as the value of type aliases created with the `type` statement.

вираз

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

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

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

f-рядок
f-strings

  String literals prefixed with `f` or `F` are commonly called «f-strings» which is short for formatted string literals. See also 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 для модуля, який імпортується.

  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 Шукачі та вантажники and `importlib` for much more detail.

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

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

free threading

  A threading model where multiple threads can run Python bytecode simultaneously within the same interpreter. This is in contrast to the global interpreter lock which allows only one thread to execute Python bytecode at a time. See PEP 703.

free-threaded build

  A build of CPython that supports free threading, configured using the `--disable-gil` option before compilation.

  See Python support for free threading.

free variable

  Formally, as defined in the language execution model, a free variable is any variable used in a namespace which is not a local variable in that namespace. See closure variable for an example. Pragmatically, due to the name of the `codeobject.co_freevars` attribute, the term is also sometimes used as a synonym for closure variable.

функція

  Серія операторів, які повертають певне значення абоненту. Йому також можна передати нуль або більше аргументів, які можуть бути використані під час виконання тіла. Дивіться також 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 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.

  As of Python 3.13, the GIL can be disabled using the `--disable-gil` build configuration. After building Python with this option, code must be run with `-X gil=0` or after setting the `PYTHON_GIL=0` environment variable. This feature enables improved performance for multi-threaded applications and makes it easier to use multi-core CPUs efficiently. For more details, see PEP 703.

  In prior versions of Python’s C API, a function might declare that it requires the GIL to be held in order to use it. This refers to having an attached thread state.

global state

  Data that is accessible throughout a program, such as module-level variables, class variables, or C static variables in extension modules. In multi-threaded programs, global state shared between threads typically requires synchronization to avoid race conditions and data races.

на основі хешу 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 — Python editor and shell is a basic editor and interpreter environment which ships with the standard distribution of Python.

immortal

  Immortal objects are a CPython implementation detail introduced in PEP 683.

  If an object is immortal, its reference count is never modified, and therefore it is never deallocated while the interpreter is running. For example, `True` and `None` are immortal in CPython.

  Immortal objects can be identified via `sys._is_immortal()`, or via `PyUnstable_IsImmortal()` in the C API.

незмінний

  An object with a fixed value. Immutable objects include numbers, strings and tuples. Such an object cannot be altered. A new object has to be created if a different value has to be stored. They play an important role in places where a constant hash value is needed, for example as a key in a dictionary. Immutable objects are inherently thread-safe because their state cannot be modified after creation, eliminating concerns about improperly synchronized concurrent modification.

шлях імпорту

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

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

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

імпортер

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

index

  A numeric value that represents the position of an element in a sequence.

  In Python, indexing starts at zero. For example, `things[0]` names the first element of `things`; `things[1]` names the second one.

  In some contexts, Python allows negative indexes for counting from the end of a sequence, and indexing using slices.

  See also subscript.

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

  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)`). For more on interactive mode, see Інтерактивний режим.

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

  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__()`. And also please note that free-threaded CPython does not guarantee thread-safe behavior of iterator operations.

key

  A value that identifies an entry in a mapping. See also subscript.

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

  Ключова функція або функція зіставлення — це виклик, який повертає значення, яке використовується для сортування або впорядкування. Наприклад, `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.casefold()` 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`.

  In a multi-threaded environment, the LBYL approach can risk introducing a race condition between «the looking» and «the leaping». For example, the code, `if key in mapping: return mapping[key]` can fail if another thread removes key from mapping after the test, but before the lookup. This issue can be solved with locks or by using the EAFP approach. See also thread-safe.

lexical analyzer

  Formal name for the tokenizer; see token.

список

  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).

lock

  A synchronization primitive that allows only one thread at a time to access a shared resource. A thread must acquire a lock before accessing the protected resource and release it afterward. If a thread attempts to acquire a lock that is already held by another thread, it will block until the lock becomes available. Python’s `threading` module provides `Lock` (a basic lock) and `RLock` (a reentrant lock). Locks are used to prevent race conditions and ensure thread-safe access to shared data. Alternative design patterns to locks exist such as queues, producer/consumer patterns, and thread-local state. See also deadlock, and reentrant.

lock-free

  An operation that does not acquire any lock and uses atomic CPU instructions to ensure correctness. Lock-free operations can execute concurrently without blocking each other and cannot be blocked by operations that hold locks. In free-threaded Python, built-in types like `dict` and `list` provide lock-free read operations, which means other threads may observe intermediate states during multi-step modifications even when those modifications hold the per-object lock.

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

  An object that loads a module. It must define the `exec_module()` and `create_module()` methods to implement the `Loader` interface. A loader is typically returned by a finder. See also:

  - Шукачі та вантажники

  - `importlib.abc.Loader`

  - PEP 302

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

  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`.

  See also Module specs.

MRO

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

мінливий

  An object with state that is allowed to change during the course of the program. In multi-threaded programs, mutable objects that are shared between threads require careful synchronization to avoid race conditions. See also immutable, thread-safe, and concurrent modification.

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

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

  Кілька вбудованих типів є іменованими кортежами, включаючи значення, що повертаються `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 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.

  Namespace packages allow several individually installable packages to have a common parent package. Otherwise, it is recommended to use a regular package.

  For more information, see PEP 420 and Пакети простору імен.

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

native code

  Code that is compiled to machine instructions and runs directly on the processor, as opposed to code that is interpreted or runs in a virtual machine. In the context of Python, native code typically refers to C, C++, Rust or Fortran code in extension modules that can be called from Python. See also extension 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.

non-deterministic

  Behavior where the outcome of a program can vary between executions with the same inputs. In multi-threaded programs, non-deterministic behavior often results from race conditions where the relative timing or interleaving of threads affects the result. Proper synchronization using locks and other synchronization primitives helps ensure deterministic behavior.

об’єкт

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

optimized scope

  A scope where target local variable names are reliably known to the compiler when the code is compiled, allowing optimization of read and write access to these names. The local namespaces for functions, generators, coroutines, comprehensions, and generator expressions are optimized in this fashion. Note: most interpreter optimizations are applied to all scopes, only those relying on a known set of local and nonlocal variable names are restricted to optimized scopes.

optional module

  An extension module that is part of the standard library, but may be absent in some builds of CPython, usually due to missing third-party libraries or because the module is not available for a given platform.

  See Requirements for optional modules for a list of optional modules that require third-party libraries.

пакет

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

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

parallelism

  Executing multiple operations at the same time (e.g. on multiple CPU cores). In Python builds with the global interpreter lock (GIL), only one thread runs Python bytecode at a time, so taking advantage of multiple CPU cores typically involves multiple processes (e.g. `multiprocessing`) or native extensions that release the GIL. In free-threaded Python, multiple Python threads can run Python code simultaneously on different cores.

параметр

  Іменована сутність у визначенні 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.

per-object lock

  A lock associated with an individual object instance rather than a global lock shared across all objects. In free-threaded Python, built-in types like `dict` and `list` use per-object locks to allow concurrent operations on different objects while serializing operations on the same object. Operations that hold the per-object lock prevent other locking operations on the same object from proceeding, but do not block lock-free operations.

запис шляху

  Єдине розташування на 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'

race condition

  A condition of a program where the behavior depends on the relative timing or ordering of events, particularly in multi-threaded programs. Race conditions can lead to non-deterministic behavior and bugs that are difficult to reproduce. A data race is a specific type of race condition involving unsynchronized access to shared memory. The LBYL coding style is particularly susceptible to race conditions in multi-threaded code. Using locks and other synchronization primitives helps prevent race conditions.

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

  The number of references to an object. When the reference count of an object drops to zero, it is deallocated. Some objects are immortal and have reference counts that are never modified, and therefore the objects are never 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.

  In CPython, reference counts are not considered to be stable or well-defined values; the number of references to an object, and how that number is affected by Python code, may be different between versions.

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

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

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

reentrant

  A property of a function or lock that allows it to be called or acquired multiple times by the same thread without causing errors or a deadlock.

  For functions, reentrancy means the function can be safely called again before a previous invocation has completed, which is important when functions may be called recursively or from signal handlers. Thread-unsafe functions may be non-deterministic if they’re called reentrantly in a multithreaded program.

  For locks, Python’s `threading.RLock` (reentrant lock) is reentrant, meaning a thread that already holds the lock can acquire it again without blocking. In contrast, `threading.Lock` is not reentrant - attempting to acquire it twice from the same thread will cause a deadlock.

  See also lock and deadlock.

REPL

  Акронім від «read–eval–print loop» (цикл читання-обчислення-вивід), інша назва для інтерактивної оболонки інтерпретатора.

__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 hashable 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, де реалізація вибирається на основі типу одного аргументу.

шматочок

  An object of type `slice`, used to describe a portion of a sequence. A slice object is created when using the slicing form of subscript notation, with colons inside square brackets, such as in `variable_name[1:3:5]`.

soft deprecated

  A soft deprecated API should not be used in new code, but it is safe for already existing code to use it. The API remains documented and tested, but will not be enhanced further.

  Soft deprecation, unlike normal deprecation, does not plan on removing the API and will not emit warnings.

  See PEP 387: Soft Deprecation.

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

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

standard library

  The collection of packages, modules and extension modules distributed as a part of the official Python interpreter package. The exact membership of the collection may vary based on platform, available system libraries, or other criteria. Documentation can be found at Стандартна бібліотека Python.

  See also `sys.stdlib_module_names` for a list of all possible standard library module names.

заява

  Оператор є частиною набору («блоку» коду). Інструкція є або 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.

stdlib

  An abbreviation of standard library.

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

  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.

subscript

  The expression in square brackets of a subscription expression, for example, the `3` in `items[3]`. Usually used to select an element of a container. Also called a key when subscripting a mapping, or an index when subscripting a sequence.

synchronization primitive

  A basic building block for coordinating (synchronizing) the execution of multiple threads to ensure thread-safe access to shared resources. Python’s `threading` module provides several synchronization primitives including `Lock`, `RLock`, `Semaphore`, `Condition`, `Event`, and `Barrier`. Additionally, the `queue` module provides multi-producer, multi-consumer queues that are especially useful in multithreaded programs. These primitives help prevent race conditions and coordinate thread execution. See also lock.

t-string
t-strings

  String literals prefixed with `t` or `T` are commonly called «t-strings» which is short for template string literals.

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

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

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

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

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

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

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

thread state

  The information used by the CPython runtime to run in an OS thread. For example, this includes the current exception, if any, and the state of the bytecode interpreter.

  Each thread state is bound to a single OS thread, but threads may have many thread states available. At most, one of them may be attached at once.

  An attached thread state is required to call most of Python’s C API, unless a function explicitly documents otherwise. The bytecode interpreter only runs under an attached thread state.

  Each thread state belongs to a single interpreter, but each interpreter may have many thread states, including multiple for the same OS thread. Thread states from multiple interpreters may be bound to the same thread, but only one can be attached in that thread at any given moment.

  See Thread State and the Global Interpreter Lock for more information.

thread-safe

  A module, function, or class that behaves correctly when used by multiple threads concurrently. Thread-safe code uses appropriate synchronization primitives like locks to protect shared mutable state, or is designed to avoid shared mutable state entirely. In the free-threaded build, built-in types like `dict`, `list`, and `set` use internal locking to make many operations thread-safe, although thread safety is not necessarily guaranteed. Code that is not thread-safe may experience race conditions and data races when used in multi-threaded programs.

token

  A small unit of source code, generated by the lexical analyzer (also called the tokenizer). Names, numbers, strings, operators, newlines and similar are represented by tokens.

  The `tokenize` module exposes Python’s lexical analyzer. The `token` module contains information on the various types of tokens.

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

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

тип

  Тип об’єкта Python визначає, що це за об’єкт; кожен об’єкт має тип. Тип об’єкта доступний як атрибут `__class__`, або може бути отриманий за допомогою `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, виданий компілятором байт-коду.

walrus operator

  A light-hearted way to refer to the assignment expression operator `:=` because it looks a bit like a walrus if you turn your head.

Дзен Python

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