Глосарій

>>>

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

...

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

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

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

2to3

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

2to3 знаходиться в стандартній бібліотеці як lib2to3; точка входу має вигляд Tools/scripts/2to3. Перегляньте 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.

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

An object which controls the environment seen in an async with statement by defining __aenter__() and __aexit__() methods. Introduced by PEP 492.

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

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

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

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

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

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

This is an asynchronous iterator which when called using the __anext__() method returns an awaitable object which will execute the body of the asynchronous generator function until the next yield expression.

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.

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

An object, that can be used in an async for statement. Must return an asynchronous iterator from its __aiter__() method. Introduced by PEP 492.

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

An object that implements the __aiter__() and __anext__() methods. __anext__() must return an awaitable object. async for resolves the awaitables returned by an asynchronous iterator’s __anext__() method until it raises a StopAsyncIteration exception. Introduced by 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.

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

Змінна, яка може мати різні значення залежно від контексту. Це схоже на Thread-Local Storage, у якому кожен потік виконання може мати різне значення для змінної. Однак із змінними контексту в одному потоці виконання може бути кілька контекстів, і основне використання змінних контексту — це відстеження змінних у паралельних асинхронних завданнях. Див. 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 для модуля, який імпортується.

Починаючи з Python 3.3, існує два типи шукачів: мета-шукачі шляху для використання з sys.meta_path та шукачі шляхів для використання з sys .path_hooks.

Перегляньте PEP 302, PEP 420 і PEP 451 для більш детальної інформації.

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

Математичне ділення, яке округлюється до найближчого цілого числа. Оператор поділу підлоги – //. Наприклад, вираз 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.

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

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

Вираз, який повертає ітератор. Це виглядає як звичайний вираз, за яким слідує речення for, що визначає змінну циклу, діапазон і необов’язкове речення if. Комбінований вираз генерує значення для охоплюючої функції:

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

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

на основі хешу 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 є інтерактивний інтерпретатор, який означає, що ви можете вводити оператори та вирази в підказку інтерпретатора, негайно виконувати їх і бачити їхні результати. Просто запустіть python без аргументів (можливо, вибравши його в головному меню комп’ютера). Це дуже потужний спосіб випробувати нові ідеї або перевірити модулі та пакунки (пам’ятайте 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).

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

Об’єкт, який завантажує модуль. Він повинен визначати метод під назвою load_module(). Завантажувач зазвичай повертається finder. Перегляньте PEP 302 для деталей та importlib.abc.Loader для 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 відповідно.

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

PEP 420 package, який служить лише контейнером для підпакетів. Пакунки простору імен можуть не мати фізичного представлення, і, зокрема, не схожі на regular package, оскільки вони не мають файлу __init__.py.

Дивіться також 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.

пакет

A Python module which can contain submodules or recursively, subpackages. Technically, a package is a Python module with a __path__ attribute.

Дивіться також 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. 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.

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

Традиційний 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+0000U+10FFFF). Щоб зберегти або передати рядок, його потрібно серіалізувати як послідовність байтів.

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

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

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

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

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

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

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

тип

Тип об’єкта 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, яка визначає очікуваний тип для змінної, атрибута класу або параметра функції чи значення, що повертається.

Type hints are optional and are not enforced by Python but they are useful to static type checkers. They can also aid IDEs with code completion and refactoring.

Доступ до підказок типу глобальних змінних, атрибутів класу та функцій, але не локальних змінних, можна отримати за допомогою 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» в інтерактивному рядку.