functions.md
1> **Источник:** https://python-all.ru/3.14/library/functions.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Встроенные функции89Интерпретатор Python включает ряд встроенных функций и типов, которые доступны всегда. Они перечислены здесь в алфавитном порядке.1011| Встроенные функции | | | |12| --- | --- | --- | --- |13| **A** [`abs()`](https://python-all.ru/3.14/library/functions.html#abs) [`aiter()`](https://python-all.ru/3.14/library/functions.html#aiter) [`all()`](https://python-all.ru/3.14/library/functions.html#all) [`anext()`](https://python-all.ru/3.14/library/functions.html#anext) [`any()`](https://python-all.ru/3.14/library/functions.html#any) [`ascii()`](https://python-all.ru/3.14/library/functions.html#ascii) **B** [`bin()`](https://python-all.ru/3.14/library/functions.html#bin) [`bool()`](https://python-all.ru/3.14/library/functions.html#bool) [`breakpoint()`](https://python-all.ru/3.14/library/functions.html#breakpoint) [`bytearray()`](https://python-all.ru/3.14/library/functions.html#func-bytearray) [`bytes()`](https://python-all.ru/3.14/library/functions.html#func-bytes) **C** [`callable()`](https://python-all.ru/3.14/library/functions.html#callable) [`chr()`](https://python-all.ru/3.14/library/functions.html#chr) [`classmethod()`](https://python-all.ru/3.14/library/functions.html#classmethod) [`compile()`](https://python-all.ru/3.14/library/functions.html#compile) [`complex()`](https://python-all.ru/3.14/library/functions.html#complex) **D** [`delattr()`](https://python-all.ru/3.14/library/functions.html#delattr) [`dict()`](https://python-all.ru/3.14/library/functions.html#func-dict) [`dir()`](https://python-all.ru/3.14/library/functions.html#dir) [`divmod()`](https://python-all.ru/3.14/library/functions.html#divmod) | **E** [`enumerate()`](https://python-all.ru/3.14/library/functions.html#enumerate) [`eval()`](https://python-all.ru/3.14/library/functions.html#eval) [`exec()`](https://python-all.ru/3.14/library/functions.html#exec) **F** [`filter()`](https://python-all.ru/3.14/library/functions.html#filter) [`float()`](https://python-all.ru/3.14/library/functions.html#float) [`format()`](https://python-all.ru/3.14/library/functions.html#format) [`frozenset()`](https://python-all.ru/3.14/library/functions.html#func-frozenset) **G** [`getattr()`](https://python-all.ru/3.14/library/functions.html#getattr) [`globals()`](https://python-all.ru/3.14/library/functions.html#globals) **H** [`hasattr()`](https://python-all.ru/3.14/library/functions.html#hasattr) [`hash()`](https://python-all.ru/3.14/library/functions.html#hash) [`help()`](https://python-all.ru/3.14/library/functions.html#help) [`hex()`](https://python-all.ru/3.14/library/functions.html#hex) **I** [`id()`](https://python-all.ru/3.14/library/functions.html#id) [`input()`](https://python-all.ru/3.14/library/functions.html#input) [`int()`](https://python-all.ru/3.14/library/functions.html#int) [`isinstance()`](https://python-all.ru/3.14/library/functions.html#isinstance) [`issubclass()`](https://python-all.ru/3.14/library/functions.html#issubclass) [`iter()`](https://python-all.ru/3.14/library/functions.html#iter) | **L** [`len()`](https://python-all.ru/3.14/library/functions.html#len) [`list()`](https://python-all.ru/3.14/library/functions.html#func-list) [`locals()`](https://python-all.ru/3.14/library/functions.html#locals) **M** [`map()`](https://python-all.ru/3.14/library/functions.html#map) [`max()`](https://python-all.ru/3.14/library/functions.html#max) [`memoryview()`](https://python-all.ru/3.14/library/functions.html#func-memoryview) [`min()`](https://python-all.ru/3.14/library/functions.html#min) **N** [`next()`](https://python-all.ru/3.14/library/functions.html#next) **O** [`object()`](https://python-all.ru/3.14/library/functions.html#object) [`oct()`](https://python-all.ru/3.14/library/functions.html#oct) [`open()`](https://python-all.ru/3.14/library/functions.html#open) [`ord()`](https://python-all.ru/3.14/library/functions.html#ord) **P** [`pow()`](https://python-all.ru/3.14/library/functions.html#pow) [`print()`](https://python-all.ru/3.14/library/functions.html#print) [`property()`](https://python-all.ru/3.14/library/functions.html#property) | **R** [`range()`](https://python-all.ru/3.14/library/functions.html#func-range) [`repr()`](https://python-all.ru/3.14/library/functions.html#repr) [`reversed()`](https://python-all.ru/3.14/library/functions.html#reversed) [`round()`](https://python-all.ru/3.14/library/functions.html#round) **S** [`set()`](https://python-all.ru/3.14/library/functions.html#func-set) [`setattr()`](https://python-all.ru/3.14/library/functions.html#setattr) [`slice()`](https://python-all.ru/3.14/library/functions.html#slice) [`sorted()`](https://python-all.ru/3.14/library/functions.html#sorted) [`staticmethod()`](https://python-all.ru/3.14/library/functions.html#staticmethod) [`str()`](https://python-all.ru/3.14/library/functions.html#func-str) [`sum()`](https://python-all.ru/3.14/library/functions.html#sum) [`super()`](https://python-all.ru/3.14/library/functions.html#super) **T** [`tuple()`](https://python-all.ru/3.14/library/functions.html#func-tuple) [`type()`](https://python-all.ru/3.14/library/functions.html#type) **V** [`vars()`](https://python-all.ru/3.14/library/functions.html#vars) **Z** [`zip()`](https://python-all.ru/3.14/library/functions.html#zip) **\_** [`__import__()`](https://python-all.ru/3.14/library/functions.html#import__) |1415#### `abs(number, /)`1617Возвращает абсолютное значение числа. Аргументом может быть целое число, число с плавающей запятой или объект, реализующий [`__abs__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__abs__). Если аргумент – комплексное число, возвращается его модуль.1819#### `aiter(async_iterable, /)`2021Возвращает [асинхронный итератор](https://python-all.ru/3.14/glossary.html#term-asynchronous-iterator) для [асинхронного итерируемого объекта](https://python-all.ru/3.14/glossary.html#term-asynchronous-iterable). Эквивалентно вызову `x.__aiter__()`.2223Примечание: в отличие от [`iter()`](https://python-all.ru/3.14/library/functions.html#iter), `aiter()` не имеет варианта с двумя аргументами.2425Добавлено в версии 3.10.2627#### `all(iterable, /)`2829Возвращает `True`, если все элементы *iterable* истинны (или если iterable пуст). Эквивалентно:3031```python32def all(iterable):33 for element in iterable:34 if not element:35 return False36 return True37```3839#### `awaitable anext(async_iterator, /)`4041#### `awaitable anext(async_iterator, default, /)`4243При ожидании возвращает следующий элемент из переданного [асинхронного итератора](https://python-all.ru/3.14/glossary.html#term-asynchronous-iterator) или *default*, если он указан и итератор исчерпан.4445Это асинхронный вариант встроенной функции [`next()`](https://python-all.ru/3.14/library/functions.html#next), который ведёт себя аналогично.4647Вызывает метод [`__anext__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__anext__) объекта *async\_iterator*, возвращая [ожидаемый объект](https://python-all.ru/3.14/glossary.html#term-awaitable). Ожидание этого объекта возвращает следующее значение итератора. Если задан *default*, он возвращается в случае исчерпания итератора, иначе возбуждается [`StopAsyncIteration`](https://python-all.ru/3.14/library/exceptions.html#StopAsyncIteration).4849Добавлено в версии 3.10.5051#### `any(iterable, /)`5253Возвращает `True`, если хотя бы один элемент *iterable* истинен. Если iterable пуст, возвращает `False`. Эквивалентно:5455```python56def any(iterable):57 for element in iterable:58 if element:59 return True60 return False61```6263#### `ascii(object, /)`6465Как и [`repr()`](https://python-all.ru/3.14/library/functions.html#repr), возвращает строку, содержащую печатное представление объекта, но экранирует не-ASCII символы в строке, возвращаемой `repr()`, используя экранирование `\x`, `\u` или `\U`. Эта строка аналогична возвращаемой функцией `repr()` в Python 2.6667#### `bin(integer, /)`6869Преобразует целое число в двоичную строку с префиксом «0b». Результат является допустимым выражением Python. Если *integer* не является объектом [`int`](https://python-all.ru/3.14/library/functions.html#int) Python, он должен определять метод [`__index__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__index__), возвращающий целое число. Некоторые примеры:7071```python72>>> bin(3)73'0b11'74>>> bin(-10)75'-0b1010'76```7778Если требуется префикс «0b» или нет, можно использовать один из следующих способов.7980```python81>>> format(14, '#b'), format(14, 'b')82('0b1110', '1110')83>>> f'{14:#b}', f'{14:b}'84('0b1110', '1110')85```8687См. также [`enum.bin()`](https://python-all.ru/3.14/library/enum.html#enum.bin) для представления отрицательных значений в дополнительном коде.8889См. также [`format()`](https://python-all.ru/3.14/library/functions.html#format) для получения дополнительной информации.9091#### `class bool(object=False, /)`9293Возвращает логическое значение, т.е. одно из `True` или `False`. Аргумент преобразуется с помощью стандартной [процедуры проверки истинности](https://python-all.ru/3.14/library/stdtypes.html#truth). Если аргумент ложен или опущен, возвращается `False`; в противном случае возвращается `True`. Класс `bool` является подклассом [`int`](https://python-all.ru/3.14/library/functions.html#int) (см. [Числовые типы – int, float, complex](https://python-all.ru/3.14/library/stdtypes.html#typesnumeric)). Он не может быть наследован далее. Его единственные экземпляры – `False` и `True` (см. [Логический тип – bool](https://python-all.ru/3.14/library/stdtypes.html#typebool)).9495Изменено в версии 3.7: Теперь параметр позиционный.9697#### `breakpoint(*args, **kws)`9899Эта функция запускает отладчик в месте вызова. А именно, она вызывает [`sys.breakpointhook()`](https://python-all.ru/3.14/library/sys.html#sys.breakpointhook), передавая `args` и `kws` напрямую. По умолчанию `sys.breakpointhook()` вызывает [`pdb.set_trace()`](https://python-all.ru/3.14/library/pdb.html#pdb.set_trace) без аргументов. В этом случае это просто вспомогательная функция, чтобы не импортировать явно [`pdb`](https://python-all.ru/3.14/library/pdb.html#module-pdb) или не набирать много кода для входа в отладчик. Однако `sys.breakpointhook()` можно задать как другую функцию, и `breakpoint()` будет автоматически вызывать её, позволяя войти в отладчик по выбору. Если `sys.breakpointhook()` недоступен, эта функция возбудит [`RuntimeError`](https://python-all.ru/3.14/library/exceptions.html#RuntimeError).100101По умолчанию поведение `breakpoint()` можно изменить с помощью переменной окружения [`PYTHONBREAKPOINT`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHONBREAKPOINT). См. [`sys.breakpointhook()`](https://python-all.ru/3.14/library/sys.html#sys.breakpointhook) для получения подробностей использования.102103Обратите внимание, что это не гарантируется, если [`sys.breakpointhook()`](https://python-all.ru/3.14/library/sys.html#sys.breakpointhook) был заменён.104105Вызывает [событие аудита](https://python-all.ru/3.14/library/sys.html#auditing) `builtins.breakpoint` с аргументом `breakpointhook`.106107Добавлено в версии 3.7.108109#### `class bytearray(source=b'')`110111#### `class bytearray(source, encoding, errors='strict')`112113Возвращает новый массив байтов. Класс [`bytearray`](https://python-all.ru/3.14/library/stdtypes.html#bytearray) представляет собой изменяемую последовательность целых чисел в диапазоне 0 \<= x \< 256. Он поддерживает большинство обычных методов изменяемых последовательностей, описанных в разделе [Изменяемые типы последовательностей](https://python-all.ru/3.14/library/stdtypes.html#typesseq-mutable), а также большинство методов, которые есть у типа [`bytes`](https://python-all.ru/3.14/library/stdtypes.html#bytes) (см. [Операции с байтами и bytearray](https://python-all.ru/3.14/library/stdtypes.html#bytes-methods)).114115Необязательный параметр *source* можно использовать для инициализации массива несколькими разными способами:116117- Если это *строка*, необходимо также указать параметры *кодировка* (и, опционально, *ошибки*); затем [`bytearray()`](https://python-all.ru/3.14/library/stdtypes.html#bytearray) преобразует строку в байты с помощью [`str.encode()`](https://python-all.ru/3.14/library/stdtypes.html#str.encode).118- Если это *целое число*, массив будет иметь указанный размер и будет инициализирован нулевыми байтами.119- Если это объект, соответствующий [буферному интерфейсу](https://python-all.ru/3.14/c-api/buffer.html#bufferobjects), для инициализации массива байтов будет использоваться буфер только для чтения этого объекта.120- Если это *итерируемый объект*, он должен быть итерируемым объектом, содержащим целые числа в диапазоне `0 <= x < 256`, которые используются в качестве начального содержимого массива.121122Без аргументов создаётся массив размера 0.123124См. также [Типы бинарных последовательностей – bytes, bytearray, memoryview](https://python-all.ru/3.14/library/stdtypes.html#binaryseq) и [Объекты bytearray](https://python-all.ru/3.14/library/stdtypes.html#typebytearray).125126#### `class bytes(source=b'')`127128#### `class bytes(source, encoding, errors='strict')`129130Возвращает новый объект «bytes», который является неизменяемой последовательностью целых чисел в диапазоне `0 <= x < 256`. [`bytes`](https://python-all.ru/3.14/library/stdtypes.html#bytes) – это неизменяемая версия [`bytearray`](https://python-all.ru/3.14/library/stdtypes.html#bytearray): он имеет те же методы, не изменяющие объект, и те же возможности индексации и взятия срезов.131132Соответственно, аргументы конструктора интерпретируются так же, как для [`bytearray()`](https://python-all.ru/3.14/library/stdtypes.html#bytearray).133134Объекты bytes также можно создавать с помощью литералов, см. [Литералы строк и bytes](https://python-all.ru/3.14/reference/lexical_analysis.html#strings).135136См. также [Типы бинарных последовательностей – bytes, bytearray, memoryview](https://python-all.ru/3.14/library/stdtypes.html#binaryseq), [Объекты bytes](https://python-all.ru/3.14/library/stdtypes.html#typebytes) и [Операции с байтами и bytearray](https://python-all.ru/3.14/library/stdtypes.html#bytes-methods).137138#### `callable(object, /)`139140Возвращает [`True`](https://python-all.ru/3.14/library/constants.html#True), если аргумент *object* является вызываемым, и [`False`](https://python-all.ru/3.14/library/constants.html#False) в противном случае. Если эта функция возвращает `True`, вызов всё ещё может завершиться ошибкой, но если возвращается `False`, вызвать *object* никогда не удастся. Обратите внимание, что классы вызываемы (вызов класса возвращает новый экземпляр); экземпляры вызываемы, если их класс имеет метод [`__call__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__call__).141142Добавлено в версии 3.2: Эта функция была впервые удалена в Python 3.0, а затем возвращена в Python 3.2.143144#### `chr(codepoint, /)`145146Возвращает строку, представляющую символ с указанной кодовой точкой Unicode. Например, `chr(97)` возвращает строку `'a'`, а `chr(8364)` возвращает строку `'€'`. Это обратная функция по отношению к [`ord()`](https://python-all.ru/3.14/library/functions.html#ord).147148Допустимый диапазон аргумента – от 0 до 1 114 111 (0x10FFFF в шестнадцатеричной системе). Если значение выходит за этот диапазон, возбуждается исключение [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError).149150#### `@classmethod`151152Преобразует метод в метод класса.153154Метод класса получает класс в качестве неявного первого аргумента, точно так же, как метод экземпляра получает экземпляр. Чтобы объявить метод класса, используйте следующий идиоматический приём:155156```python157class C:158 @classmethod159 def f(cls, arg1, arg2): ...160```161162Форма `@classmethod` является функцией [декоратора](https://python-all.ru/3.14/glossary.html#term-decorator) – подробнее см. в [Function definitions](https://python-all.ru/3.14/reference/compound_stmts.html#function).163164Метод класса можно вызывать как через класс (например, `C.f()`), так и через экземпляр (например, `C().f()`). Экземпляр при этом игнорируется, учитывается только его класс. Если метод класса вызывается для производного класса, в качестве подразумеваемого первого аргумента передаётся объект производного класса.165166Методы классов отличаются от статических методов C++ или Java. Если нужны именно статические методы, см. [`staticmethod()`](https://python-all.ru/3.14/library/functions.html#staticmethod) в этом разделе. Дополнительную информацию о методах классов можно найти в разделе [Стандартная иерархия типов](https://python-all.ru/3.14/reference/datamodel.html#types).167168Изменено в версии 3.9: Теперь методы классов могут оборачивать другие [дескрипторы](https://python-all.ru/3.14/glossary.html#term-descriptor), например [`property()`](https://python-all.ru/3.14/library/functions.html#property).169170Изменено в версии 3.10: Теперь методы классов наследуют атрибуты методов ([`__module__`](https://python-all.ru/3.14/reference/datamodel.html#function.__module__), [`__name__`](https://python-all.ru/3.14/reference/datamodel.html#function.__name__), [`__qualname__`](https://python-all.ru/3.14/reference/datamodel.html#function.__qualname__), [`__doc__`](https://python-all.ru/3.14/reference/datamodel.html#function.__doc__) и [`__annotations__`](https://python-all.ru/3.14/reference/datamodel.html#function.__annotations__)) и имеют новый атрибут `__wrapped__`.171172Устарело с версии 3.11, удалено в версии 3.13: Методы классов больше не могут оборачивать другие [дескрипторы](https://python-all.ru/3.14/glossary.html#term-descriptor), например [`property()`](https://python-all.ru/3.14/library/functions.html#property).173174#### `compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)`175176Компилирует *source* в объект кода или AST. Объекты кода могут выполняться с помощью [`exec()`](https://python-all.ru/3.14/library/functions.html#exec) или [`eval()`](https://python-all.ru/3.14/library/functions.html#eval). *source* может быть обычной строкой, строкой байтов или объектом AST. Обратитесь к документации модуля [`ast`](https://python-all.ru/3.14/library/ast.html#module-ast) за информацией о работе с объектами AST.177178Аргумент *filename* должен указывать файл, из которого был прочитан код; если код был прочитан не из файла, следует передать какое-либо узнаваемое значение (обычно используется `'<string>'`).179180Аргумент *mode* определяет, какой код следует компилировать; он может быть равен `'exec'`, если *source* состоит из последовательности инструкций, `'eval'`, если из одного выражения, или `'single'`, если из одной интерактивной инструкции (в последнем случае будут выведены выражения, которые вычисляются в значение, отличное от `None`).181182Необязательные аргументы *flags* и *dont\_inherit* управляют тем, какие [параметры компилятора](https://python-all.ru/3.14/library/ast.html#ast-compiler-flags) следует активировать, а какие [будущие возможности](https://python-all.ru/3.14/reference/simple_stmts.html#future) разрешить. Если ни один из них не указан (или оба равны нулю), код компилируется с теми же флагами, что и код, вызывающий `compile()`. Если аргумент *flags* передан, а *dont\_inherit* – нет (или равен нулю), то параметры компилятора и будущие инструкции, заданные аргументом *flags*, используются в дополнение к тем, которые использовались бы в любом случае. Если *dont\_inherit* – ненулевое целое, то аргументом *flags* являются сами флаги – флаги (будущие возможности и параметры компилятора) в окружающем коде игнорируются.183184Параметры компилятора и будущие инструкции задаются битами, которые можно объединять побитовым ИЛИ, чтобы указать несколько параметров. Битовое поле, необходимое для указания конкретной будущей возможности, можно найти как атрибут [`compiler_flag`](https://python-all.ru/3.14/library/__future__.html#future__._Feature.compiler_flag) у экземпляра [`_Feature`](https://python-all.ru/3.14/library/__future__.html#future__._Feature) в модуле [`__future__`](https://python-all.ru/3.14/library/__future__.html#module-__future__). [Флаги компилятора](https://python-all.ru/3.14/library/ast.html#ast-compiler-flags) можно найти в модуле [`ast`](https://python-all.ru/3.14/library/ast.html#module-ast), с префиксом `PyCF_`.185186Аргумент *optimize* задаёт уровень оптимизации компилятора; значение по умолчанию `-1` выбирает уровень оптимизации интерпретатора, заданный опциями [`-O`](https://python-all.ru/3.14/using/cmdline.html#cmdoption-O). Явные уровни: `0` (без оптимизации; `__debug__` истинно), `1` (утверждения удалены, `__debug__` ложно) или `2` (строки документации также удалены).187188Эта функция возбуждает исключение [`SyntaxError`](https://python-all.ru/3.14/library/exceptions.html#SyntaxError) или [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError), если скомпилированный исходный код некорректен.189190Если требуется разобрать код Python в его AST-представление, см. [`ast.parse()`](https://python-all.ru/3.14/library/ast.html#ast.parse).191192Возбуждает [событие аудита](https://python-all.ru/3.14/library/sys.html#auditing) `compile` с аргументами `source` и `filename`. Это событие также может быть возбуждено при неявной компиляции.193194> **Примечание**195>196> При компиляции строки с многострочным кодом в режиме `'single'` или `'eval'` входные данные должны завершаться как минимум одним символом новой строки. Это необходимо для облегчения определения незавершённых и завершённых инструкций в модуле [`code`](https://python-all.ru/3.14/library/code.html#module-code).197198> **Предупреждение**199>200> Можно привести к аварийному завершению интерпретатора Python с помощью достаточно длинной/сложной строки при компиляции в объект AST из-за ограничений глубины стека в компиляторе AST Python.201202Изменено в версии 3.2: Разрешено использование символов новой строки Windows и Mac. Кроме того, входные данные в режиме `'exec'` больше не обязаны заканчиваться символом новой строки. Добавлен параметр *optimize*.203204Изменено в версии 3.5: Ранее возбуждалось исключение [`TypeError`](https://python-all.ru/3.14/library/exceptions.html#TypeError), когда в *source* встречались нулевые байты.205206Добавлено в версии 3.8: Теперь `ast.PyCF_ALLOW_TOP_LEVEL_AWAIT` можно передавать в флагах для включения поддержки верхнеуровневых `await`, `async for` и `async with`.207208#### `class complex(number=0, /)`209210#### `class complex(string, /)`211212#### `class complex(real=0, imag=0)`213214Преобразует строку или число в комплексное число, или создаёт комплексное число из действительной и мнимой частей.215216Примеры:217218```pycon219>>> complex('+1.23')220(1.23+0j)221>>> complex('-4.5j')222-4.5j223>>> complex('-1.23+4.5j')224(-1.23+4.5j)225>>> complex('\t( -1.23+4.5J )\n')226(-1.23+4.5j)227>>> complex('-Infinity+NaNj')228(-inf+nanj)229>>> complex(1.23)230(1.23+0j)231>>> complex(imag=-4.5)232-4.5j233>>> complex(-1.23, 4.5)234(-1.23+4.5j)235```236237Если аргумент – строка, она должна содержать либо действительную часть (в том же формате, что и для [`float()`](https://python-all.ru/3.14/library/functions.html#float)), либо мнимую часть (в том же формате, но с суффиксом `'j'` или `'J'`), либо обе части (в этом случае знак мнимой части обязателен). Строка может быть необязательно окружена пробельными символами и круглыми скобками `'('` и `')'`, которые игнорируются. Строка не должна содержать пробелов между `'+'`, `'-'`, суффиксом `'j'` или `'J'` и десятичным числом. Например, `complex('1+2j')` подходит, а `complex('1 + 2j')` возбуждает [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError). Более формально, входные данные должны соответствовать правилу грамматики [`complexvalue`](https://python-all.ru/3.14/library/functions.html#grammar-token-float-complexvalue) после удаления скобок и начальных/конечных пробельных символов:238239```240241complexvalue: floatvalue |242 floatvalue ("j" | "J") |243 floatvalue sign absfloatvalue ("j" | "J")244```245246Если аргумент – число, конструктор выполняет числовое преобразование, как [`int`](https://python-all.ru/3.14/library/functions.html#int) и [`float`](https://python-all.ru/3.14/library/functions.html#float). Для произвольного объекта Python `x`, `complex(x)` делегирует полномочия `x.__complex__()`. Если [`__complex__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__complex__) не определён, то используется [`__float__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__float__). Если `__float__()` не определён, то используется [`__index__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__index__).247248Если переданы два аргумента или используются именованные аргументы, каждый аргумент может быть любого числового типа (включая комплексный). Если оба аргумента – действительные числа, возвращается комплексное число с действительной компонентой *real* и мнимой компонентой *imag*. Если оба аргумента – комплексные числа, возвращается комплексное число с действительной компонентой `real.real-imag.imag` и мнимой компонентой `real.imag+imag.real`. Если один из аргументов – действительное число, в приведенных выражениях используется только его действительная часть.249250См. также [`complex.from_number()`](https://python-all.ru/3.14/library/stdtypes.html#complex.from_number), которая принимает только один числовой аргумент.251252Если все аргументы опущены, возвращает `0j`.253254Тип complex описан в разделе [Числовые типы – int, float, complex](https://python-all.ru/3.14/library/stdtypes.html#typesnumeric).255256Изменено в версии 3.6: Разрешена группировка цифр с помощью подчёркиваний, как в литералах кода.257258Изменено в версии 3.8: Используется [`__index__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__index__), если [`__complex__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__complex__) и [`__float__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__float__) не определены.259260Устарело с версии 3.14: Передача комплексного числа в качестве аргумента *real* или *imag* теперь устарела; его следует передавать только как единственный позиционный аргумент.261262#### `delattr(object, name, /)`263264Эта функция является аналогом [`setattr()`](https://python-all.ru/3.14/library/functions.html#setattr). Аргументы – объект и строка. Строка должна быть именем одного из атрибутов объекта. Функция удаляет указанный атрибут, если объект это позволяет. Например, `delattr(x, 'foobar')` эквивалентно `del x.foobar`. *name* не обязательно должен быть идентификатором Python (см. `setattr()`).265266#### `class dict(**kwargs)`267268#### `class dict(mapping, /, **kwargs)`269270#### `class dict(iterable, /, **kwargs)`271272Создаёт новый словарь. Объект [`dict`](https://python-all.ru/3.14/library/stdtypes.html#dict) – это класс словаря. См. также [Типы отображений – dict](https://python-all.ru/3.14/library/stdtypes.html#typesmapping) для документации об этом классе.273274О других контейнерах см. встроенные классы [`list`](https://python-all.ru/3.14/library/stdtypes.html#list), [`set`](https://python-all.ru/3.14/library/stdtypes.html#set) и [`tuple`](https://python-all.ru/3.14/library/stdtypes.html#tuple), а также модуль [`collections`](https://python-all.ru/3.14/library/collections.html#module-collections).275276#### `dir()`277278#### `dir(object, /)`279280Без аргументов возвращает список имён в текущей локальной области видимости. Если передан аргумент, пытается вернуть список допустимых атрибутов этого объекта.281282Если у объекта есть метод с именем [`__dir__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__dir__), этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, реализующим собственную функцию [`__getattr__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__getattr__) или [`__getattribute__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__getattribute__), настраивать способ, которым `dir()` сообщает их атрибуты.283284Если объект не предоставляет [`__dir__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__dir__), функция старается собрать информацию из атрибута [`__dict__`](https://python-all.ru/3.14/reference/datamodel.html#object.__dict__) объекта, если он определён, и из объекта его типа. Результирующий список не обязательно полон и может быть неточным, если у объекта есть собственный [`__getattr__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__getattr__).285286Механизм `dir()` по умолчанию ведёт себя по-разному для разных типов объектов, поскольку он пытается выдать наиболее релевантную, а не полную информацию:287288- Если объект является модулем, список содержит имена атрибутов этого модуля.289- Если объект является типом или классом, список содержит имена его атрибутов, а также (рекурсивно) атрибутов его базовых классов.290- В остальных случаях список содержит имена атрибутов объекта, имена атрибутов его класса и (рекурсивно) атрибутов базовых классов его класса.291292Полученный список сортируется по алфавиту. Например:293294```python295>>> import struct296>>> dir() # показать имена в пространстве имён модуля297['__builtins__', '__name__', 'struct']298>>> dir(struct) # показать имена в модуле struct299['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',300 '__initializing__', '__loader__', '__name__', '__package__',301 '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',302 'unpack', 'unpack_from']303>>> class Shape:304... def __dir__(self):305... return ['area', 'perimeter', 'location']306...307>>> s = Shape()308>>> dir(s)309['area', 'location', 'perimeter']310```311312> **Примечание**313>314> Поскольку `dir()` предоставляется в первую очередь для удобства использования в интерактивной оболочке, он старается выдать интересный набор имён скорее, чем строго или последовательно определённый, и его детальное поведение может меняться от версии к версии. Например, атрибуты метакласса не входят в результирующий список, когда аргументом является класс.315316#### `divmod(a, b, /)`317318Принимает два (не комплексных) числа в качестве аргументов и возвращает пару чисел, состоящую из их частного и остатка при целочисленном делении. Для смешанных типов операндов применяются правила бинарных арифметических операторов. Для целых чисел результат совпадает с `(a // b, a % b)`. Для чисел с плавающей запятой результат равен `(q, a % b)`, где *q* обычно равно `math.floor(a / b)`, но может быть на 1 меньше. В любом случае `q * b + a % b` очень близко к *a*; если `a % b` не равно нулю, он имеет тот же знак, что и *b*, и `0 <= abs(a % b) < abs(b)`.319320#### `enumerate(iterable, start=0)`321322Возвращает объект enumerate. *iterable* должен быть последовательностью, [итератором](https://python-all.ru/3.14/glossary.html#term-iterator) или другим объектом, поддерживающим итерацию. Метод [`__next__()`](https://python-all.ru/3.14/library/stdtypes.html#iterator.__next__) итератора, возвращаемого`enumerate()`, возвращает кортеж, содержащий счётчик (начиная с *start*, который по умолчанию равен 0) и значения, полученные при итерации по *iterable*.323324```python325>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']326>>> list(enumerate(seasons))327[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]328>>> list(enumerate(seasons, start=1))329[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]330```331332Эквивалентно следующему:333334```python335def enumerate(iterable, start=0):336 n = start337 for elem in iterable:338 yield n, elem339 n += 1340```341342#### `eval(source, /, globals=None, locals=None)`343344**Параметры:**345346- **source** ([`str`](https://python-all.ru/3.14/library/stdtypes.html#str) | [объект кода](https://python-all.ru/3.14/reference/datamodel.html#code-objects)) – выражение Python.347- **globals** ([`dict`](https://python-all.ru/3.14/library/stdtypes.html#dict) | `None`) – глобальное пространство имён (по умолчанию: `None`).348- **locals** ([отображение](https://python-all.ru/3.14/glossary.html#term-mapping) | `None`) – локальное пространство имён (по умолчанию: `None`).349350**Возвращает:**351352Результат вычисленного выражения.353354**Возбуждает:**355356Синтаксические ошибки сообщаются как исключения.357358> **Предупреждение**359>360> Эта функция выполняет произвольный код. Её вызов с непроверенными данными от пользователя приводит к уязвимостям в безопасности.361362Аргумент *source* разбирается и вычисляется как выражение Python (строго говоря, список условий) с использованием отображений *globals* и *locals* в качестве глобального и локального пространств имён. Если словарь *globals* присутствует и не содержит значения для ключа `__builtins__`, ссылка на словарь встроенного модуля [`builtins`](https://python-all.ru/3.14/library/builtins.html#module-builtins) вставляется под этим ключом перед разбором *source*. Переопределение `__builtins__` может использоваться для ограничения или изменения доступных имён, но это **не** механизм безопасности: выполняемый код всё равно может получить доступ ко всем встроенным функциям. Если отображение *locals* опущено, по умолчанию используется словарь *globals*. Если опущены оба отображения, исходный код выполняется с *globals* и *locals* из окружения, в котором вызвана `eval()`. Обратите внимание: *eval()* будет иметь доступ только к [вложенным областям видимости](https://python-all.ru/3.14/glossary.html#term-nested-scope) (нелокальным) в окружающем окружении, если на них уже есть ссылки в области, вызывающей `eval()` (например, с помощью оператора [`nonlocal`](https://python-all.ru/3.14/reference/simple_stmts.html#nonlocal)).363364Пример:365366```python367>>> x = 1368>>> eval('x+1')3692370```371372Эту функцию также можно использовать для выполнения произвольных объектов кода (например, созданных с помощью [`compile()`](https://python-all.ru/3.14/library/functions.html#compile)). В этом случае передаётся объект кода вместо строки. Если объект кода был скомпилирован с `'exec'` в качестве аргумента *mode*, возвращаемое значение `eval()` будет `None`.373374Подсказки: динамическое выполнение инструкций поддерживается функцией [`exec()`](https://python-all.ru/3.14/library/functions.html#exec). Функции [`globals()`](https://python-all.ru/3.14/library/functions.html#globals) и [`locals()`](https://python-all.ru/3.14/library/functions.html#locals) возвращают текущий глобальный и локальный словари соответственно, что может быть полезно для передачи их в `eval()` или `exec()`.375376Если исходный код является строкой, начальные и конечные пробелы и табуляции удаляются.377378См. [`ast.literal_eval()`](https://python-all.ru/3.14/library/ast.html#ast.literal_eval) – функция для вычисления строк с выражениями, содержащими только литералы.379380Вызывает [событие аудита](https://python-all.ru/3.14/library/sys.html#auditing) `exec` с объектом кода в качестве аргумента. Также могут возникать события компиляции кода.381382Изменено в версии 3.13: Аргументы *globals* и *locals* теперь можно передавать как именованные.383384Изменено в версии 3.13: Семантика пространства имён *locals* по умолчанию скорректирована, как описано для встроенной функции [`locals()`](https://python-all.ru/3.14/library/functions.html#locals).385386#### `exec(source, /, globals=None, locals=None, *, closure=None)`387388> **Предупреждение**389>390> Эта функция выполняет произвольный код. Её вызов с непроверенными данными от пользователя приводит к уязвимостям в безопасности.391392Эта функция поддерживает динамическое выполнение кода Python. *source* должен быть строкой или объектом кода. Если это строка, она разбирается как набор инструкций Python и затем выполняется (если не возникает синтаксическая ошибка). [\[1\]](https://python-all.ru/3.14/library/functions.html#id2) Если это объект кода, он просто выполняется. В любом случае ожидается, что выполняемый код корректен как файловый ввод (см. раздел [File input](https://python-all.ru/3.14/reference/toplevel_components.html#file-input) в справочном руководстве). Имейте в виду, что инструкции [`nonlocal`](https://python-all.ru/3.14/reference/simple_stmts.html#nonlocal), [`yield`](https://python-all.ru/3.14/reference/simple_stmts.html#yield) и [`return`](https://python-all.ru/3.14/reference/simple_stmts.html#return) не могут использоваться вне определений функций, даже в контексте кода, переданного функции `exec()`. Возвращаемое значение – `None`.393394В любом случае, если необязательные части опущены, код выполняется в текущей области видимости. Если указан только *globals*, он должен быть словарём (а не подклассом словаря), который будет использоваться как для глобальных, так и для локальных переменных. Если заданы *globals* и *locals*, они используются соответственно для глобальных и локальных переменных. Если указан, *locals* может быть любым отображением. Помните, что на уровне модуля globals и locals – это один и тот же словарь.395396> **Примечание**397>398> Когда `exec` получает два отдельных объекта в качестве *globals* и *locals*, код выполняется так, как если бы он был встроен в определение класса. Это означает, что функции и классы, определённые в выполняемом коде, не смогут обращаться к переменным, присвоенным на верхнем уровне (так как «верхнеуровневые» переменные трактуются как переменные класса в определении класса).399400Если словарь *globals* не содержит значения для ключа `__builtins__`, под этим ключом вставляется ссылка на словарь встроенного модуля [`builtins`](https://python-all.ru/3.14/library/builtins.html#module-builtins). Переопределение `__builtins__` можно использовать для ограничения или изменения доступных имён, но это **не** механизм безопасности: выполняемый код всё равно может получить доступ ко всем встроенным объектам.401402Аргумент *closure* задаёт замыкание – кортеж cell-переменных. Он допустим только тогда, когда *object* является объектом кода, содержащим [свободные (замыкающие) переменные](https://python-all.ru/3.14/glossary.html#term-closure-variable). Длина кортежа должна в точности соответствовать длине атрибута [`co_freevars`](https://python-all.ru/3.14/reference/datamodel.html#codeobject.co_freevars) объекта кода.403404Вызывает [событие аудита](https://python-all.ru/3.14/library/sys.html#auditing) `exec` с объектом кода в качестве аргумента. Также могут возникать события компиляции кода.405406> **Примечание**407>408> Встроенные функции [`globals()`](https://python-all.ru/3.14/library/functions.html#globals) и [`locals()`](https://python-all.ru/3.14/library/functions.html#locals) возвращают текущее глобальное и локальное пространство имён соответственно, что может быть полезно для передачи в качестве второго и третьего аргумента в `exec()`.409410> **Примечание**411>412> Поведение *locals* по умолчанию описано ниже для функции [`locals()`](https://python-all.ru/3.14/library/functions.html#locals). Если нужно увидеть влияние кода на *locals* после возврата из функции `exec()`, передайте явный словарь *locals*.413414Изменено в версии 3.11: Добавлен параметр *closure*.415416Изменено в версии 3.13: Аргументы *globals* и *locals* теперь можно передавать как именованные.417418Изменено в версии 3.13: Семантика пространства имён *locals* по умолчанию скорректирована, как описано для встроенной функции [`locals()`](https://python-all.ru/3.14/library/functions.html#locals).419420#### `filter(function, iterable, /)`421422Строит итератор из тех элементов *iterable*, для которых *function* истинна. *iterable* может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если *function* равна `None`, подразумевается тождественная функция, то есть удаляются все элементы *iterable*, которые являются ложными.423424Обратите внимание: `filter(function, iterable)` эквивалентно генераторному выражению `(item for item in iterable if function(item))`, если function не равна `None`, и `(item for item in iterable if item)`, если function равна `None`.425426См. [`itertools.filterfalse()`](https://python-all.ru/3.14/library/itertools.html#itertools.filterfalse) для дополнительной функции, которая возвращает элементы *iterable*, для которых *function* ложна.427428#### `class float(number=0.0, /)`429430#### `class float(string, /)`431432Возвращает число с плавающей запятой, построенное из числа или строки.433434Примеры:435436```pycon437>>> float('+1.23')4381.23439>>> float(' -12345\n')440-12345.0441>>> float('1e-003')4420.001443>>> float('+1E6')4441000000.0445>>> float('-Infinity')446-inf447```448449Если аргумент – строка, она должна содержать десятичное число, возможно, с ведущим знаком и пробелами. Допустимые знаки: `'+'` или `'-'`; знак `'+'` не влияет на итоговое значение. Аргументом может быть также строка, представляющая NaN (не число), положительную или отрицательную бесконечность. Точнее, входные данные должны соответствовать правилу грамматики [`floatvalue`](https://python-all.ru/3.14/library/functions.html#grammar-token-float-floatvalue) после удаления ведущих и завершающих пробельных символов:450451```452453sign: "+" | "-"454infinity: "Infinity" | "inf"455nan: "nan"456digit: <a Unicode decimal digit, i.e. characters in Unicode general category Nd>457digitpart: digit (["_"] digit)*458number: [digitpart] "." digitpart | digitpart ["."]459exponent: ("e" | "E") [sign] digitpart460floatnumber: number [exponent]461absfloatvalue: floatnumber | infinity | nan462floatvalue: [sign] absfloatvalue463```464465Регистр не важен: например, «inf», «Inf», «INFINITY» и «iNfINity» – все допустимые варианты написания положительной бесконечности.466467В противном случае, если аргумент – целое число или число с плавающей запятой, возвращается число с плавающей запятой с тем же значением (в пределах точности Python). Если аргумент выходит за диапазон float в Python, вызывается [`OverflowError`](https://python-all.ru/3.14/library/exceptions.html#OverflowError).468469Для произвольного объекта Python `x` функция `float(x)` делегирует выполнение `x.__float__()`. Если [`__float__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__float__) не определён, используется [`__index__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__index__).470471См. также [`float.from_number()`](https://python-all.ru/3.14/library/stdtypes.html#float.from_number), которая принимает только числовой аргумент.472473Если аргумент не указан, возвращается `0.0`.474475Тип float описан в разделе [Числовые типы – int, float, complex](https://python-all.ru/3.14/library/stdtypes.html#typesnumeric).476477Изменено в версии 3.6: Разрешена группировка цифр с помощью подчёркиваний, как в литералах кода.478479Изменено в версии 3.7: Теперь параметр позиционный.480481Изменено в версии 3.8: Использует [`__index__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__index__), если [`__float__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__float__) не определён.482483#### `format(value, format_spec='', /)`484485Преобразует *value* в «форматированное» представление, управляемое параметром *format\_spec*. Интерпретация *format\_spec* зависит от типа аргумента *value*; однако существует стандартный синтаксис форматирования, используемый большинством встроенных типов: [Мини-язык спецификации формата](https://python-all.ru/3.14/library/string.html#formatspec).486487Значение *format\_spec* по умолчанию – пустая строка, что обычно даёт тот же эффект, что и вызов [`str(value)`](https://python-all.ru/3.14/library/stdtypes.html#str).488489Вызов `format(value, format_spec)` преобразуется в `type(value).__format__(value, format_spec)`, который обходит словарь экземпляра при поиске метода [`__format__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__format__) у значения. Исключение [`TypeError`](https://python-all.ru/3.14/library/exceptions.html#TypeError) возникает, если поиск метода достигает [`object`](https://python-all.ru/3.14/library/functions.html#object), а *format\_spec* не пуст, или если *format\_spec* или возвращаемое значение не являются строками.490491Изменено в версии 3.4: `object().__format__(format_spec)` вызывает [`TypeError`](https://python-all.ru/3.14/library/exceptions.html#TypeError), если *format\_spec* не является пустой строкой.492493#### `class frozenset(iterable=(), /)`494495Возвращает новый объект [`frozenset`](https://python-all.ru/3.14/library/stdtypes.html#frozenset), опционально с элементами из *iterable*. `frozenset` – это встроенный класс. См. также [Set Types – set, frozenset](https://python-all.ru/3.14/library/stdtypes.html#types-set) для документации об этом классе.496497Для других контейнеров см. встроенные классы [`set`](https://python-all.ru/3.14/library/stdtypes.html#set), [`list`](https://python-all.ru/3.14/library/stdtypes.html#list), [`tuple`](https://python-all.ru/3.14/library/stdtypes.html#tuple) и [`dict`](https://python-all.ru/3.14/library/stdtypes.html#dict), а также модуль [`collections`](https://python-all.ru/3.14/library/collections.html#module-collections).498499#### `getattr(object, name, /)`500501#### `getattr(object, name, default, /)`502503Возвращает значение именованного атрибута объекта *object*. *name* должен быть строкой. Если строка является именем одного из атрибутов объекта, результатом будет значение этого атрибута. Например, `getattr(x, 'foobar')` эквивалентно `x.foobar`. Если именованный атрибут не существует, возвращается *default*, если он передан, в противном случае вызывается [`AttributeError`](https://python-all.ru/3.14/library/exceptions.html#AttributeError). *name* не обязательно должен быть идентификатором Python (см. [`setattr()`](https://python-all.ru/3.14/library/functions.html#setattr)).504505> **Примечание**506>507> Поскольку [искажение имени закрытых атрибутов](https://python-all.ru/3.14/reference/expressions.html#private-name-mangling) происходит во время компиляции, необходимо вручную исказить имя закрытого атрибута (атрибуты с двумя подчеркиваниями в начале), чтобы получить его с помощью `getattr()`.508509#### `globals()`510511Возвращает словарь, реализующий пространство имен текущего модуля. Для кода внутри функций он устанавливается при определении функции и остается неизменным независимо от того, откуда функция вызывается.512513#### `hasattr(object, name, /)`514515Аргументами являются объект и строка. Результат равен `True`, если строка является именем одного из атрибутов объекта, и `False` в противном случае. (Реализовано вызовом `getattr(object, name)` и проверкой, вызывает ли он исключение [`AttributeError`](https://python-all.ru/3.14/library/exceptions.html#AttributeError) или нет.)516517#### `hash(object, /)`518519Возвращает хеш-значение объекта (если оно есть). Хеш-значения – целые числа. Они используются для быстрого сравнения ключей словаря при поиске. Числовые значения, равные при сравнении, имеют одинаковое хеш-значение (даже если они разных типов, как в случае 1 и 1.0).520521> **Примечание**522>523> Для объектов с пользовательскими методами [`__hash__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__hash__) обратите внимание, что `hash()` усекает возвращаемое значение в зависимости от разрядности хост-машины.524525#### `help()`526527#### `help(request)`528529Запускает встроенную справочную систему. (Эта функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная справочная система запускается на консоли интерпретатора. Если аргумент – строка, то она ищется как имя модуля, функции, класса, метода, ключевого слова или темы документации, и на консоль выводится страница справки. Если аргумент – объект любого другого типа, генерируется страница справки по этому объекту.530531Обратите внимание, что если при вызове `help()` в списке параметров функции встречается косая черта (/), это означает, что параметры до нее являются только позиционными. Подробнее см. [запись в FAQ о только позиционных параметрах](https://python-all.ru/3.14/faq/programming.html#faq-positional-only-arguments).532533Эта функция добавляется во встроенное пространство имен модулем [`site`](https://python-all.ru/3.14/library/site.html#module-site).534535Изменено в версии 3.4: Изменения в [`pydoc`](https://python-all.ru/3.14/library/pydoc.html#module-pydoc) и [`inspect`](https://python-all.ru/3.14/library/inspect.html#module-inspect) привели к тому, что сообщаемые сигнатуры для вызываемых объектов стали более полными и согласованными.536537#### `hex(integer, /)`538539Преобразует целое число в шестнадцатеричную строку в нижнем регистре с префиксом «0x». Если *integer* не является объектом Python [`int`](https://python-all.ru/3.14/library/functions.html#int), он должен определять метод [`__index__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__index__), возвращающий целое число. Некоторые примеры:540541```python542>>> hex(255)543'0xff'544>>> hex(-42)545'-0x2a'546```547548Если вы хотите преобразовать целое число в шестнадцатеричную строку в верхнем или нижнем регистре, с префиксом или без, можно использовать любой из следующих способов:549550```python551>>> '%#x' % 255, '%x' % 255, '%X' % 255552('0xff', 'ff', 'FF')553>>> format(255, '#x'), format(255, 'x'), format(255, 'X')554('0xff', 'ff', 'FF')555>>> f'{255:#x}', f'{255:x}', f'{255:X}'556('0xff', 'ff', 'FF')557```558559См. также [`format()`](https://python-all.ru/3.14/library/functions.html#format) для получения дополнительной информации.560561См. также [`int()`](https://python-all.ru/3.14/library/functions.html#int) для преобразования шестнадцатеричной строки в целое число с основанием 16.562563> **Примечание**564>565> Чтобы получить шестнадцатеричное строковое представление числа с плавающей точкой, используйте метод [`float.hex()`](https://python-all.ru/3.14/library/stdtypes.html#float.hex).566567#### `id(object, /)`568569Возвращает «идентификатор» объекта. Это целое число, которое гарантированно будет уникальным и постоянным для данного объекта на протяжении его времени жизни. Два объекта с непересекающимся временем жизни могут иметь одинаковое значение `id()`.570571**Особенность реализации CPython:** Это адрес объекта в памяти.572573Вызывает [событие аудита](https://python-all.ru/3.14/library/sys.html#auditing) `builtins.id` с аргументом `id`.574575#### `input()`576577#### `input(prompt, /)`578579Если аргумент *prompt* присутствует, он выводится в стандартный вывод без символа новой строки. Затем функция читает строку из ввода, преобразует её в строку (удаляя конечный символ новой строки) и возвращает её. Когда достигнут конец файла, возбуждается [`EOFError`](https://python-all.ru/3.14/library/exceptions.html#EOFError). Пример:580581```python582>>> s = input('--> ')583--> Monty Python's Flying Circus584>>> s585"Monty Python's Flying Circus"586```587588Если модуль [`readline`](https://python-all.ru/3.14/library/readline.html#module-readline) был загружен, то `input()` будет использовать его для предоставления расширенных возможностей редактирования строки и истории команд.589590Возбуждает [событие аудита](https://python-all.ru/3.14/library/sys.html#auditing) `builtins.input` с аргументом `prompt` перед чтением ввода591592Возбуждает [событие аудита](https://python-all.ru/3.14/library/sys.html#auditing) `builtins.input/result` с результатом после успешного чтения ввода.593594#### `class int(number=0, /)`595596#### `class int(string, /, base=10)`597598Возвращает целочисленный объект, созданный на основе числа или строки, или возвращает `0`, если аргументы не указаны.599600Примеры:601602```pycon603>>> int(123.45)604123605>>> int('123')606123607>>> int(' -12_345\n')608-12345609>>> int('FACE', 16)61064206611>>> int('0xface', 0)61264206613>>> int('01110011', base=2)614115615```616617Если аргумент определяет [`__int__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__int__), `int(x)` возвращает `x.__int__()`. Если аргумент определяет [`__index__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__index__), он возвращает `x.__index__()`. Для чисел с плавающей запятой значение усекается в сторону нуля.618619Если аргумент не является числом или задан *base*, то он должен быть строкой, экземпляром [`bytes`](https://python-all.ru/3.14/library/stdtypes.html#bytes) или [`bytearray`](https://python-all.ru/3.14/library/stdtypes.html#bytearray), представляющим целое число в системе счисления по основанию *base*. Необязательно строка может начинаться с `+` или `-` (без пробела между ними), содержать ведущие нули, быть окружена пробельными символами и содержать одиночные символы подчёркивания между цифрами.620621Строка целого числа по основанию n содержит цифры, каждая из которых представляет значение от 0 до n-1. Значения от 0 до 9 могут быть представлены любой десятичной цифрой Unicode. Значения от 10 до 35 могут быть представлены `a` до `z` (или `A` до `Z`). По умолчанию *base* равно 10. Допустимые основания: 0 и 2–36. Строки с основанием 2, 8 и 16 могут быть необязательно дополнены префиксом `0b`/`0B`, `0o`/`0O` или `0x`/`0X`, как и целочисленные литералы в коде. Для основания 0 строка интерпретируется аналогично [целочисленному литералу в коде](https://python-all.ru/3.14/reference/lexical_analysis.html#integers), в том смысле, что фактическое основание (2, 8, 10 или 16) определяется префиксом. Основание 0 также запрещает ведущие нули: `int('010', 0)` недопустимо, тогда как `int('010')` и `int('010', 8)` допустимы.622623Целочисленный тип описан в разделе [Числовые типы – int, float, complex](https://python-all.ru/3.14/library/stdtypes.html#typesnumeric).624625Изменено в версии 3.4: Если *base* не является экземпляром `int` и объект *base* имеет метод [`base.__index__`](https://python-all.ru/3.14/reference/datamodel.html#object.__index__), то вызывается этот метод для получения целого числа для основания. В предыдущих версиях использовался [`base.__int__`](https://python-all.ru/3.14/reference/datamodel.html#object.__int__) вместо `base.__index__`.626627Изменено в версии 3.6: Разрешена группировка цифр с помощью подчёркиваний, как в литералах кода.628629Изменено в версии 3.7: Первый параметр теперь является только позиционным.630631Изменено в версии 3.8: Использует [`__index__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__index__), если [`__int__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__int__) не определён.632633Изменено в версии 3.11: `int` строковые вводы и строковые представления могут быть ограничены для предотвращения атак типа «отказ в обслуживании». Исключение [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError) возбуждается, когда превышен лимит при преобразовании строки в `int` или когда преобразование `int` в строку превысило бы лимит. См. документацию [integer string conversion length limitation](https://python-all.ru/3.14/library/stdtypes.html#int-max-str-digits).634635Изменено в версии 3.14: [`int()`](https://python-all.ru/3.14/library/functions.html#int) больше не делегирует полномочия методу [`__trunc__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__trunc__).636637#### `isinstance(object, classinfo, /)`638639Возвращает `True`, если аргумент *object* является экземпляром аргумента *classinfo* или его (прямого, косвенного или [виртуального](https://python-all.ru/3.14/glossary.html#term-abstract-base-class)) подкласса. Если *object* не является объектом указанного типа, функция всегда возвращает `False`. Если *classinfo* является кортежем объектов типов (или рекурсивно, других таких кортежей) или [типом объединения (Union Type)](https://python-all.ru/3.14/library/stdtypes.html#types-union) из нескольких типов, возвращает `True`, если *object* является экземпляром любого из этих типов. Если *classinfo* не является типом или кортежем типов и таких кортежей, возбуждается исключение [`TypeError`](https://python-all.ru/3.14/library/exceptions.html#TypeError). `TypeError` может не возбуждаться для недопустимого типа, если более ранняя проверка прошла успешно.640641Изменено в версии 3.10: *classinfo* может быть [типом объединения (Union Type)](https://python-all.ru/3.14/library/stdtypes.html#types-union).642643#### `issubclass(class, classinfo, /)`644645Возвращает `True`, если *class* является подклассом (прямым, косвенным или [виртуальным](https://python-all.ru/3.14/glossary.html#term-abstract-base-class)) *classinfo*. Класс считается своим собственным подклассом. *classinfo* может быть кортежем объектов классов (или рекурсивно, других таких кортежей) или [типом объединения (Union Type)](https://python-all.ru/3.14/library/stdtypes.html#types-union), в этом случае возвращает `True`, если *class* является подклассом любого элемента в *classinfo*. В любом другом случае возбуждается исключение [`TypeError`](https://python-all.ru/3.14/library/exceptions.html#TypeError).646647Изменено в версии 3.10: *classinfo* может быть [типом объединения (Union Type)](https://python-all.ru/3.14/library/stdtypes.html#types-union).648649#### `iter(iterable, /)`650651#### `iter(callable, sentinel, /)`652653Возвращает объект [итератор](https://python-all.ru/3.14/glossary.html#term-iterator). Первый аргумент интерпретируется совершенно по-разному в зависимости от наличия второго аргумента. Без второго аргумента единственный аргумент должен быть объектом коллекции, который поддерживает протокол [итерируемого объекта](https://python-all.ru/3.14/glossary.html#term-iterable) (метод [`__iter__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__iter__)), либо он должен поддерживать протокол последовательности (метод [`__getitem__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__getitem__) с целочисленными аргументами, начиная с `0`). Если он не поддерживает ни один из этих протоколов, возбуждается [`TypeError`](https://python-all.ru/3.14/library/exceptions.html#TypeError). Если задан второй аргумент *sentinel*, то первый аргумент должен быть вызываемым объектом. Созданный в этом случае итератор будет вызывать *callable* без аргументов при каждом вызове своего метода [`__next__()`](https://python-all.ru/3.14/library/stdtypes.html#iterator.__next__); если возвращённое значение равно *sentinel*, будет возбуждено [`StopIteration`](https://python-all.ru/3.14/library/exceptions.html#StopIteration), в противном случае будет возвращено значение.654655См. также [Типы итераторов](https://python-all.ru/3.14/library/stdtypes.html#typeiter).656657Одно из полезных применений второй формы `iter()` – создание построчного (блочного) читателя. Например, чтение блоков фиксированной ширины из двоичного файла базы данных до достижения конца файла:658659```python660from functools import partial661with open('mydata.db', 'rb') as f:662 for block in iter(partial(f.read, 64), b''):663 process_block(block)664```665666#### `len(object, /)`667668Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (например, строка, байты, кортеж, список или диапазон) или коллекция (например, словарь, множество или замороженное множество).669670**Особенность реализации CPython:** `len` возбуждает [`OverflowError`](https://python-all.ru/3.14/library/exceptions.html#OverflowError) для длин, превышающих [`sys.maxsize`](https://python-all.ru/3.14/library/sys.html#sys.maxsize), например [`range(2 ** 100)`](https://python-all.ru/3.14/library/stdtypes.html#range).671672#### `class list(iterable=(), /)`673674Вместо того чтобы быть функцией, [`list`](https://python-all.ru/3.14/library/stdtypes.html#list) на самом деле является изменяемым типом последовательности, как описано в [Списки](https://python-all.ru/3.14/library/stdtypes.html#typesseq-list) и [Типы последовательностей – list, tuple, range](https://python-all.ru/3.14/library/stdtypes.html#typesseq).675676#### `locals()`677678Возвращает объект отображения, представляющий текущую таблицу локальных символов: имена переменных – ключи, а их текущие связанные ссылки – значения.679680На уровне модуля, а также при использовании [`exec()`](https://python-all.ru/3.14/library/functions.html#exec) или [`eval()`](https://python-all.ru/3.14/library/functions.html#eval) с одним пространством имён, эта функция возвращает то же пространство имён, что и [`globals()`](https://python-all.ru/3.14/library/functions.html#globals).681682На уровне класса она возвращает пространство имён, которое будет передано конструктору метакласса.683684При использовании `exec()` или `eval()` с отдельными аргументами для локального и глобального пространств, она возвращает локальное пространство имён, переданное в вызов функции.685686Во всех перечисленных случаях каждый вызов `locals()` в данном фрейме выполнения возвращает *один и тот же* объект отображения. Изменения, внесённые через объект отображения, возвращаемый `locals()`, будут видны как присвоенные, переприсвоенные или удалённые локальные переменные; а присвоение, переприсвоение или удаление локальных переменных немедленно повлияет на содержимое возвращаемого объекта отображения.687688В [оптимизированной области видимости](https://python-all.ru/3.14/glossary.html#term-optimized-scope) (включая функции, генераторы и корутины) каждый вызов `locals()` вместо этого возвращает новый словарь, содержащий текущие привязки локальных переменных функции и любые ссылки на нелокальные ячейки. В этом случае изменения привязок имён через возвращённый словарь *не* записываются обратно в соответствующие локальные переменные или ссылки на нелокальные ячейки, а присвоение, переприсвоение или удаление локальных переменных и ссылок на нелокальные ячейки *не* влияет на содержимое ранее возвращённых словарей.689690Вызов `locals()` внутри генератора списка (comprehension) в функции, генераторе или корутине эквивалентен вызову в содержащей области видимости, за исключением того, что будут включены инициализированные переменные итерации генератора. В других областях видимости он ведёт себя так, как если бы генератор выполнялся как вложенная функция.691692Вызов `locals()` внутри генераторного выражения эквивалентен вызову вложенной функции-генератора.693694Изменено в версии 3.12: Поведение `locals()` в генераторе списка было обновлено, как описано в [**PEP 709**](https://python-all.ru/3.14/library/functions.html).695696Изменено в версии 3.13: В рамках [**PEP 667**](https://python-all.ru/3.14/library/functions.html) теперь определена семантика изменения объектов отображения, возвращаемых этой функцией. Поведение в [оптимизированных областях видимости](https://python-all.ru/3.14/glossary.html#term-optimized-scope) теперь такое, как описано выше. За исключением этого определения, поведение в других областях видимости осталось без изменений по сравнению с предыдущими версиями.697698#### `map(function, iterable, /, *iterables, strict=False)`699700Возвращает итератор, который применяет *function* к каждому элементу *iterable* и выдаёт результаты. Если переданы дополнительные аргументы *iterables*, *function* должна принимать столько же аргументов и применяется к элементам всех итерируемых объектов параллельно. При наличии нескольких итерируемых объектов итератор останавливается, когда самый короткий из них исчерпан. Если *strict* равен `True` и один из итерируемых объектов исчерпывается раньше других, возбуждается [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError). Для случаев, когда входные данные функции уже организованы в кортежи аргументов, см. [`itertools.starmap()`](https://python-all.ru/3.14/library/itertools.html#itertools.starmap).701702Изменено в версии 3.14: Добавлен параметр *strict*.703704#### `max(iterable, /, *, key=None)`705706#### `max(iterable, /, *, default, key=None)`707708#### `max(arg1, arg2, /, *args, key=None)`709710Возвращает наибольший элемент итерируемого объекта или наибольший из двух или более аргументов.711712Если указан один позиционный аргумент, он должен быть [итерируемым объектом](https://python-all.ru/3.14/glossary.html#term-iterable). Возвращается наибольший элемент итерируемого объекта. Если указано два или более позиционных аргумента, возвращается наибольший из них.713714Есть два необязательных аргумента, передаваемых только по ключу. Аргумент *key* задаёт функцию упорядочения с одним аргументом, подобно тому, как это делается для [`list.sort()`](https://python-all.ru/3.14/library/stdtypes.html#list.sort). Аргумент *default* задаёт объект, возвращаемый, если переданный итерируемый объект пуст. Если итерация пуста и *default* не указан, возбуждается [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError).715716Если несколько элементов являются максимальными, функция возвращает первый встреченный. Это согласуется с другими инструментами, сохраняющими стабильность сортировки, такими как `sorted(iterable, key=keyfunc, reverse=True)[0]` и `heapq.nlargest(1, iterable, key=keyfunc)`.717718Изменено в версии 3.4: Добавлен параметр *default*, передаваемый только по ключу.719720Изменено в версии 3.8: Аргумент *key* может быть `None`.721722#### `class memoryview(object)`723724Возвращает объект «представление памяти» (memory view), созданный из переданного аргумента. Дополнительную информацию см. в [Memory Views](https://python-all.ru/3.14/library/stdtypes.html#typememoryview).725726#### `min(iterable, /, *, key=None)`727728#### `min(iterable, /, *, default, key=None)`729730#### `min(arg1, arg2, /, *args, key=None)`731732Возвращает наименьший элемент итерируемого объекта или наименьший из двух или более аргументов.733734Если указан один позиционный аргумент, он должен быть [итерируемым объектом](https://python-all.ru/3.14/glossary.html#term-iterable). Возвращается наименьший элемент итерируемого объекта. Если указано два или более позиционных аргумента, возвращается наименьший из них.735736Есть два необязательных аргумента, передаваемых только по ключу. Аргумент *key* задаёт функцию упорядочения с одним аргументом, подобно тому, как это делается для [`list.sort()`](https://python-all.ru/3.14/library/stdtypes.html#list.sort). Аргумент *default* задаёт объект, возвращаемый, если переданный итерируемый объект пуст. Если итерация пуста и *default* не указан, возбуждается [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError).737738Если несколько элементов являются минимальными, функция возвращает первый из них. Это согласуется с другими инструментами, сохраняющими устойчивость сортировки, такими как `sorted(iterable, key=keyfunc)[0]` и `heapq.nsmallest(1, iterable, key=keyfunc)`.739740Изменено в версии 3.4: Добавлен параметр *default*, передаваемый только по ключу.741742Изменено в версии 3.8: Аргумент *key* может быть `None`.743744#### `next(iterator, /)`745746#### `next(iterator, default, /)`747748Извлекает следующий элемент из [итератора](https://python-all.ru/3.14/glossary.html#term-iterator) вызовом его метода [`__next__()`](https://python-all.ru/3.14/library/stdtypes.html#iterator.__next__). Если задан *default*, он возвращается, когда итератор исчерпан, в противном случае возбуждается [`StopIteration`](https://python-all.ru/3.14/library/exceptions.html#StopIteration).749750#### `class object`751752Это самый базовый класс для всех остальных классов. Он содержит методы, общие для всех экземпляров классов Python. При вызове конструктора он возвращает новый пустой объект. Конструктор не принимает никаких аргументов.753754> **Примечание**755>756> Экземпляры `object` *не* имеют атрибут [`__dict__`](https://python-all.ru/3.14/reference/datamodel.html#object.__dict__), поэтому нельзя присваивать произвольные атрибуты экземпляру `object`.757758#### `oct(integer, /)`759760Преобразует целое число в восьмеричную строку с префиксом «0o». Результат является корректным выражением Python. Если *integer* не является объектом [`int`](https://python-all.ru/3.14/library/functions.html#int) Python, он должен определить метод [`__index__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__index__), возвращающий целое число. Например:761762```python763>>> oct(8)764'0o10'765>>> oct(-56)766'-0o70'767```768769Если требуется преобразовать целое число в восьмеричную строку с префиксом «0o» или без него, можно воспользоваться одним из следующих способов.770771```python772>>> '%#o' % 10, '%o' % 10773('0o12', '12')774>>> format(10, '#o'), format(10, 'o')775('0o12', '12')776>>> f'{10:#o}', f'{10:o}'777('0o12', '12')778```779780См. также [`format()`](https://python-all.ru/3.14/library/functions.html#format) для получения дополнительной информации.781782#### `open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)`783784Открывает *file* и возвращает соответствующий [файловый объект](https://python-all.ru/3.14/glossary.html#term-file-object). Если файл не может быть открыт, возбуждается [`OSError`](https://python-all.ru/3.14/library/exceptions.html#OSError). См. [Чтение и запись файлов](https://python-all.ru/3.14/tutorial/inputoutput.html#tut-files) для дополнительных примеров использования этой функции.785786*file* – это [path-like object](https://python-all.ru/3.14/glossary.html#term-path-like-object), задающий путь (абсолютный или относительный относительно текущей рабочей директории) к открываемому файлу или целый файловый дескриптор оборачиваемого файла. (Если задан файловый дескриптор, он закрывается при закрытии возвращаемого объекта I/O, если только *closefd* не установлен в `False`.)787788*mode* – необязательная строка, задающая режим открытия файла. По умолчанию `'r'`, что означает открытие для чтения в текстовом режиме. Другие распространённые значения: `'w'` для записи (с усечением файла, если он уже существует), `'x'` для эксклюзивного создания и `'a'` для добавления (что в *некоторых* системах Unix означает, что *все* записи добавляются в конец файла независимо от текущей позиции). В текстовом режиме, если *encoding* не указана, используется кодировка, зависящая от платформы: вызывается [`locale.getencoding()`](https://python-all.ru/3.14/library/locale.html#locale.getencoding) для получения текущей локали. (Для чтения и записи сырых байтов используйте двоичный режим и оставляйте *encoding* неуказанным.) Доступны следующие режимы:789790| Символ | Значение |791| --- | --- |792| `'r'` | открытие для чтения (по умолчанию) |793| `'w'` | открытие для записи, с предварительным усечением файла |794| `'x'` | открытие для эксклюзивного создания, завершается ошибкой, если файл уже существует |795| `'a'` | открытие для записи, добавление в конец файла, если он существует |796| `'b'` | двоичный режим |797| `'t'` | текстовый режим (по умолчанию) |798| `'+'` | открытие для обновления (чтения и записи) |799800Режим по умолчанию – `'r'` (открытие для чтения текста, синоним `'rt'`). Режимы `'w+'` и `'w+b'` открывают и усекают файл. Режимы `'r+'` и `'r+b'` открывают файл без усечения.801802Как упоминалось в [Обзоре](https://python-all.ru/3.14/library/io.html#io-overview), Python различает двоичный и текстовый ввод-вывод. Файлы, открытые в двоичном режиме (включая `'b'` в аргументе *mode*), возвращают содержимое в виде объектов [`bytes`](https://python-all.ru/3.14/library/stdtypes.html#bytes) без какого-либо декодирования. В текстовом режиме (по умолчанию или когда `'t'` включён в аргумент *mode*) содержимое файла возвращается как [`str`](https://python-all.ru/3.14/library/stdtypes.html#str), при этом байты предварительно декодируются с использованием кодировки, зависящей от платформы, или указанной *encoding*, если она задана.803804> **Примечание**805>806> Python не зависит от представления текстовых файлов в базовой операционной системе; вся обработка выполняется самим Python и, следовательно, не зависит от платформы.807808*buffering* – необязательное целое число, задающее политику буферизации. Передайте 0 для отключения буферизации (разрешено только в двоичном режиме), 1 для выбора построчной буферизации (возможно только при записи в текстовом режиме) и целое число \> 1 для указания размера в байтах буфера фиксированного размера. Обратите внимание, что указание размера буфера таким образом применяется для двоичного буферизованного ввода-вывода, но `TextIOWrapper` (т.е. файлы, открытые с `mode='r+'`) будут иметь другую буферизацию. Чтобы отключить буферизацию в `TextIOWrapper`, рассмотрите использование флага `write_through` для [`io.TextIOWrapper.reconfigure()`](https://python-all.ru/3.14/library/io.html#io.TextIOWrapper.reconfigure). Если аргумент *buffering* не задан, политика буферизации по умолчанию работает следующим образом:809810- Двоичные файлы буферизуются блоками фиксированного размера; размер буфера равен `max(min(blocksize, 8 MiB), DEFAULT_BUFFER_SIZE)`, если доступен размер блока устройства. В большинстве систем буфер обычно имеет размер 128 килобайт.811- «Интерактивные» текстовые файлы (файлы, для которых [`isatty()`](https://python-all.ru/3.14/library/io.html#io.IOBase.isatty) возвращает `True`) используют построчную буферизацию. Остальные текстовые файлы используют политику, описанную выше для двоичных файлов.812813*encoding* – это имя кодировки, используемой для декодирования или кодирования файла. Этот параметр следует использовать только в текстовом режиме. Кодировка по умолчанию зависит от платформы (возвращаемое значение [`locale.getencoding()`](https://python-all.ru/3.14/library/locale.html#locale.getencoding)), но можно использовать любую [текстовую кодировку](https://python-all.ru/3.14/glossary.html#term-text-encoding), поддерживаемую Python. Список поддерживаемых кодировок см. в модуле [`codecs`](https://python-all.ru/3.14/library/codecs.html#module-codecs).814815*errors* – необязательная строка, определяющая, как обрабатывать ошибки кодирования и декодирования; этот параметр нельзя использовать в двоичном режиме. Доступны различные стандартные обработчики ошибок (перечислены в разделе [Обработчики ошибок](https://python-all.ru/3.14/library/codecs.html#error-handlers)), однако также подходит любое имя обработчика, зарегистрированное с помощью [`codecs.register_error()`](https://python-all.ru/3.14/library/codecs.html#codecs.register_error). Стандартные имена включают:816817- `'strict'` – возбуждать исключение [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError) при ошибке кодирования. Значение по умолчанию `None` имеет тот же эффект.818- `'ignore'` – игнорировать ошибки. Учтите, что игнорирование ошибок кодирования может привести к потере данных.819- `'replace'` – вставляет заменяющий символ (например, `'?'`) в местах повреждённых данных.820- `'surrogateescape'` – представляет некорректные байты как суррогатные кодовые единицы в диапазоне U+DC80–U+DCFF. При записи данных эти суррогатные единицы снова преобразуются в исходные байты при использовании обработчика ошибок `surrogateescape`. Это удобно для обработки файлов с неизвестной кодировкой.821- `'xmlcharrefreplace'` поддерживается только при записи в файл. Символы, не поддерживаемые кодировкой, заменяются соответствующей XML-ссылкой на символ `&#nnn;`.822- `'backslashreplace'` заменяет повреждённые данные escape-последовательностями Python с обратной косой чертой.823- `'namereplace'` (также поддерживается только при записи) заменяет неподдерживаемые символы escape-последовательностями `\N{...}`.824825определяет, как разбирать символы новой строки из потока. Может принимать значения `None`, `''`, `'\n'`, `'\r'` и `'\r\n'`. Работает следующим образом:826827- При чтении из потока, если *newline* равен `None`, включается универсальный режим новых строк. Строки во входных данных могут заканчиваться на `'\n'`, `'\r'` или `'\r\n'`; перед возвратом вызывающему коду они преобразуются в `'\n'`. Если равен `''`, универсальный режим новых строк включён, но концы строк возвращаются как есть, без преобразования. Если задано любое другое допустимое значение, строки на входе завершаются только заданной строкой, и конец строки возвращается вызывающему коду без изменений.828- При записи в поток, если *newline* равен `None`, все символы `'\n'` преобразуются в системный разделитель строк по умолчанию [`os.linesep`](https://python-all.ru/3.14/library/os.html#os.linesep). Если *newline* равен `''` или `'\n'`, преобразование не выполняется. Если *newline* равен любому другому допустимому значению, все символы `'\n'` преобразуются в заданную строку.829830Если *closefd* равен `False` и был передан файловый дескриптор, а не имя файла, то базовый файловый дескриптор останется открытым после закрытия файла. Если передано имя файла, то *closefd* должен быть `True` (значение по умолчанию); в противном случае будет возбуждена ошибка.831832Можно задать собственный «открыватель», передав вызываемый объект как *opener*. Базовый файловый дескриптор для файлового объекта получается вызовом *opener* с аргументами (*file*, *flags*). *opener* должен вернуть открытый файловый дескриптор (передача [`os.open`](https://python-all.ru/3.14/library/os.html#os.open) в качестве *opener* даёт результат, аналогичный передаче `None`).833834Созданный файл является [ненаследуемым](https://python-all.ru/3.14/library/os.html#fd-inheritance).835836В следующем примере используется параметр [dir\_fd](https://python-all.ru/3.14/library/os.html#dir-fd) функции [`os.open()`](https://python-all.ru/3.14/library/os.html#os.open) для открытия файла относительно заданного каталога:837838```python839>>> import os840>>> dir_fd = os.open('somedir', os.O_RDONLY)841>>> def opener(path, flags):842... return os.open(path, flags, dir_fd=dir_fd)843...844>>> with open('spamspam.txt', 'w', opener=opener) as f:845... print('This will be written to somedir/spamspam.txt', file=f)846...847>>> os.close(dir_fd) # не допустить утечки файлового дескриптора848```849850Тип [файлового объекта](https://python-all.ru/3.14/glossary.html#term-file-object), возвращаемого функцией `open()`, зависит от режима. При использовании `open()` для открытия файла в текстовом режиме (`'w'`, `'r'`, `'wt'`, `'rt'` и т.д.) возвращается подкласс [`io.TextIOBase`](https://python-all.ru/3.14/library/io.html#io.TextIOBase) (а именно [`io.TextIOWrapper`](https://python-all.ru/3.14/library/io.html#io.TextIOWrapper)). При открытии файла в двоичном режиме с буферизацией возвращаемый класс является подклассом [`io.BufferedIOBase`](https://python-all.ru/3.14/library/io.html#io.BufferedIOBase). Конкретный класс различается: в режиме чтения в двоичном виде возвращается [`io.BufferedReader`](https://python-all.ru/3.14/library/io.html#io.BufferedReader); в режимах записи и добавления в двоичном виде – [`io.BufferedWriter`](https://python-all.ru/3.14/library/io.html#io.BufferedWriter), а в режиме чтения/записи – [`io.BufferedRandom`](https://python-all.ru/3.14/library/io.html#io.BufferedRandom). Если буферизация отключена, возвращается необработанный поток – подкласс [`io.RawIOBase`](https://python-all.ru/3.14/library/io.html#io.RawIOBase), [`io.FileIO`](https://python-all.ru/3.14/library/io.html#io.FileIO).851852См. также модули для работы с файлами: [`fileinput`](https://python-all.ru/3.14/library/fileinput.html#module-fileinput), [`io`](https://python-all.ru/3.14/library/io.html#module-io) (где объявлено `open()`), [`os`](https://python-all.ru/3.14/library/os.html#module-os), [`os.path`](https://python-all.ru/3.14/library/os.path.html#module-os.path), [`tempfile`](https://python-all.ru/3.14/library/tempfile.html#module-tempfile) и [`shutil`](https://python-all.ru/3.14/library/shutil.html#module-shutil).853854Вызывает [событие аудита](https://python-all.ru/3.14/library/sys.html#auditing) `open` с аргументами `path`, `mode`, `flags`.855856Аргументы `mode` и `flags` могли быть изменены или определены на основе исходного вызова.857858Изменено в версии 3.3:859860- Добавлен параметр *opener*.861- Добавлен режим `'x'`.862- [`IOError`](https://python-all.ru/3.14/library/exceptions.html#IOError) ранее возбуждался, теперь это псевдоним [`OSError`](https://python-all.ru/3.14/library/exceptions.html#OSError).863- Теперь возбуждается [`FileExistsError`](https://python-all.ru/3.14/library/exceptions.html#FileExistsError), если файл, открываемый в эксклюзивном режиме создания (`'x'`), уже существует.864865Изменено в версии 3.4:866867- Файл теперь является ненаследуемым.868869Изменено в версии 3.5:870871- Если системный вызов был прерван и обработчик сигнала не возбудил исключение, функция теперь повторяет системный вызов вместо возбуждения исключения [`InterruptedError`](https://python-all.ru/3.14/library/exceptions.html#InterruptedError) (см. [**PEP 475**](https://python-all.ru/3.14/library/functions.html) для обоснования).872- Добавлен обработчик ошибок `'namereplace'`.873874Изменено в версии 3.6:875876- Добавлена поддержка объектов, реализующих [`os.PathLike`](https://python-all.ru/3.14/library/os.html#os.PathLike).877- В Windows открытие консольного буфера может вернуть подкласс [`io.RawIOBase`](https://python-all.ru/3.14/library/io.html#io.RawIOBase), отличный от [`io.FileIO`](https://python-all.ru/3.14/library/io.html#io.FileIO).878879Изменено в версии 3.11: Режим `'U'` удалён.880881#### `ord(character, /)`882883Возвращает порядковое значение символа.884885Если аргумент – строка из одного символа, возвращает кодовую точку Unicode этого символа. Например, `ord('a')` возвращает целое число `97`, а `ord('€')` (знак евро) возвращает `8364`. Это обратная операция для [`chr()`](https://python-all.ru/3.14/library/functions.html#chr).886887Если аргумент – объект [`bytes`](https://python-all.ru/3.14/library/stdtypes.html#bytes) или [`bytearray`](https://python-all.ru/3.14/library/stdtypes.html#bytearray) длины 1, возвращает его однобайтовое значение. Например, `ord(b'a')` возвращает целое число `97`.888889#### `pow(base, exp, mod=None)`890891Возвращает *base* в степени *exp*; если указан *mod*, возвращает *base* в степени *exp* по модулю *mod* (вычисляется эффективнее, чем `pow(base, exp) % mod`). Двухаргументная форма `pow(base, exp)` эквивалентна использованию оператора возведения в степень: `base**exp`.892893Если аргументы имеют встроенные числовые типы со смешанными типами операндов, применяются правила приведения для бинарных арифметических операторов. Для операндов [`int`](https://python-all.ru/3.14/library/functions.html#int) результат имеет тот же тип, что и операнды (после приведения), если только второй аргумент не отрицателен; в этом случае все аргументы преобразуются в float и возвращается результат типа float. Например, `pow(10, 2)` возвращает `100`, но `pow(10, -2)` возвращает `0.01`. Для отрицательного основания типа `int` или [`float`](https://python-all.ru/3.14/library/functions.html#float) и нецелого показателя возвращается комплексный результат. Например, `pow(-9, 0.5)` возвращает значение, близкое к `3j`. Для отрицательного основания типа `int` или `float` с целым показателем возвращается результат типа float. Например, `pow(-9, 2.0)` возвращает `81.0`.894895Для операндов [`int`](https://python-all.ru/3.14/library/functions.html#int) *base* и *exp*, если указан *mod*, *mod* также должен быть целого типа, и *mod* должен быть ненулевым. Если *mod* указан и *exp* отрицателен, *base* должен быть взаимно прост с *mod*. В этом случае возвращается `pow(inv_base, -exp, mod)`, где *inv\_base* – обратный элемент к *base* по модулю *mod*.896897Вот пример вычисления обратного элемента для `38` по модулю `97`:898899```python900>>> pow(38, -1, mod=97)90123902>>> 23 * 38 % 97 == 1903True904```905906Изменено в версии 3.8: Для операндов [`int`](https://python-all.ru/3.14/library/functions.html#int) трёхаргументная форма `pow` теперь допускает отрицательный второй аргумент, что позволяет вычислять обратные элементы по модулю.907908Изменено в версии 3.8: Разрешены именованные аргументы. Ранее поддерживались только позиционные аргументы.909910#### `print(*objects, sep=' ', end='\n', file=None, flush=False)`911912Выводит *objects* в текстовый поток *file*, разделённые *sep* и завершаемые *end*. *sep*, *end*, *file* и *flush*, если указаны, должны передаваться как именованные аргументы.913914Все неименованные аргументы преобразуются в строки, как [`str()`](https://python-all.ru/3.14/library/stdtypes.html#str), и записываются в поток, разделённые *sep* и завершаемые *end*. Оба *sep* и *end* должны быть строками; они также могут быть `None`, что означает использование значений по умолчанию. Если *objects* не указаны, `print()` просто запишет *end*.915916Аргумент *file* должен быть объектом с методом `write(string)`; если он не указан или равен `None`, будет использоваться [`sys.stdout`](https://python-all.ru/3.14/library/sys.html#sys.stdout). Так как выводимые аргументы преобразуются в текстовые строки, `print()` нельзя использовать с файловыми объектами в бинарном режиме. Для них используйте `file.write(...)`.917918Буферизация вывода обычно определяется *file*. Однако если *flush* равен true, поток принудительно сбрасывается.919920Изменено в версии 3.3: Добавлен именованный аргумент *flush*.921922#### `class property(fget=None, fset=None, fdel=None, doc=None)`923924Возвращает атрибут property.925926*fget* – функция для получения значения атрибута. *fset* – функция для установки значения атрибута. *fdel* – функция для удаления значения атрибута. А *doc* создаёт строку документации для атрибута.927928Типичное использование – определить управляемый атрибут `x`:929930```python931class C:932 def __init__(self):933 self._x = None934935 def getx(self):936 return self._x937938 def setx(self, value):939 self._x = value940941 def delx(self):942 del self._x943944 x = property(getx, setx, delx, "I'm the 'x' property.")945```946947Если *c* – экземпляр *C*, то `c.x` вызовет геттер, `c.x = value` вызовет сеттер, а `del c.x` – делитер.948949Если указан, *doc* будет строкой документации атрибута property. В противном случае property скопирует строку документации *fget* (если она существует). Это позволяет легко создавать свойства только для чтения, используя [`property()`](https://python-all.ru/3.14/library/functions.html#property) в качестве [декоратора](https://python-all.ru/3.14/glossary.html#term-decorator):950951```python952class Parrot:953 def __init__(self):954 self._voltage = 100000955956 @property957 def voltage(self):958 """Получить текущее напряжение."""959 return self._voltage960```961962Декоратор `@property` превращает метод `voltage()` в «геттер» для атрибута только для чтения с тем же именем и устанавливает строку документации для *voltage* в «Get the current voltage.»963964#### `@getter`965966#### `@setter`967968#### `@deleter`969970Объект property имеет методы `getter`, `setter` и `deleter`, которые можно использовать как декораторы; они создают копию свойства с соответствующей функцией доступа, установленной в декорированную функцию. Лучше всего это объяснить на примере:971972```python973class C:974 def __init__(self):975 self._x = None976977 @property978 def x(self):979 """Я – свойство 'x'."""980 return self._x981982 @x.setter983 def x(self, value):984 self._x = value985986 @x.deleter987 def x(self):988 del self._x989```990991Этот код полностью эквивалентен первому примеру. Убедитесь, что дополнительные функции имеют то же имя, что и исходное свойство (`x` в данном случае.)992993Возвращаемый объект property также имеет атрибуты `fget`, `fset` и `fdel`, соответствующие аргументам конструктора.994995Изменено в версии 3.5: Строки документации объектов property теперь доступны для записи.996997#### `__name__`998999Атрибут, содержащий имя свойства. Имя свойства можно изменить во время выполнения.10001001Добавлено в версии 3.13.10021003#### `class range(stop, /)`10041005#### `class range(start, stop, step=1, /)`10061007[`range`](https://python-all.ru/3.14/library/stdtypes.html#range) – не функция, а неизменяемый тип последовательности, как описано в [Ranges](https://python-all.ru/3.14/library/stdtypes.html#typesseq-range) и [Sequence Types – list, tuple, range](https://python-all.ru/3.14/library/stdtypes.html#typesseq).10081009#### `repr(object, /)`10101011Возвращает строку, содержащую читаемое представление объекта. Для многих типов эта функция пытается вернуть строку, которая при передаче в [`eval()`](https://python-all.ru/3.14/library/functions.html#eval) даст объект с тем же значением; в противном случае представление – это строка в угловых скобках, содержащая имя типа объекта вместе с дополнительной информацией, часто включающей имя и адрес объекта. Класс может управлять тем, что возвращает эта функция для его экземпляров, определив метод [`__repr__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__repr__). Если [`sys.displayhook()`](https://python-all.ru/3.14/library/sys.html#sys.displayhook) недоступен, эта функция вызовет [`RuntimeError`](https://python-all.ru/3.14/library/exceptions.html#RuntimeError).10121013Этот класс имеет пользовательское представление, которое можно вычислить:10141015```python1016class Person:1017 def __init__(self, name, age):1018 self.name = name1019 self.age = age10201021 def __repr__(self):1022 return f"Person('{self.name}', {self.age})"1023```10241025#### `reversed(object, /)`10261027Возвращает обратный [итератор](https://python-all.ru/3.14/glossary.html#term-iterator). Аргументом должен быть объект, имеющий метод [`__reversed__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__reversed__) или поддерживающий протокол последовательности (метод [`__len__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__len__) и метод [`__getitem__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__getitem__) с целочисленными аргументами, начиная с `0`).10281029#### `round(number, ndigits=None)`10301031Возвращает *number*, округлённое до *ndigits* знаков после запятой. Если *ndigits* опущено или равно `None`, возвращается ближайшее целое к входному значению.10321033Для встроенных типов, поддерживающих `round()`, значения округляются до ближайшего кратного 10 в степени минус *ndigits*; если два кратных одинаково близки, округление производится в сторону чётного выбора (так, например, оба `round(0.5)` и `round(-0.5)` дают `0`, а `round(1.5)` даёт `2`). Любое целое значение допустимо для *ndigits* (положительное, нулевое или отрицательное). Возвращаемое значение – целое число, если *ndigits* опущено или равно `None`. В противном случае возвращаемое значение имеет тот же тип, что и *number*.10341035Для произвольного объекта Python `number` функция `round` делегирует выполнение `number.__round__`.10361037> **Примечание**1038>1039> Поведение `round()` для чисел с плавающей запятой может удивлять: например, `round(2.675, 2)` даёт `2.67` вместо ожидаемого `2.68`. Это не ошибка: это результат того, что большинство десятичных дробей не могут быть точно представлены в виде float. См. [Floating-Point Arithmetic: Issues and Limitations](https://python-all.ru/3.14/tutorial/floatingpoint.html#tut-fp-issues) для получения дополнительной информации.10401041#### `class set(iterable=(), /)`10421043Возвращает новый объект [`set`](https://python-all.ru/3.14/library/stdtypes.html#set), опционально с элементами из *iterable*. `set` – это встроенный класс. См. также [Set Types – set, frozenset](https://python-all.ru/3.14/library/stdtypes.html#types-set) для документации об этом классе.10441045Для других контейнеров см. встроенные классы [`frozenset`](https://python-all.ru/3.14/library/stdtypes.html#frozenset), [`list`](https://python-all.ru/3.14/library/stdtypes.html#list), [`tuple`](https://python-all.ru/3.14/library/stdtypes.html#tuple) и [`dict`](https://python-all.ru/3.14/library/stdtypes.html#dict), а также модуль [`collections`](https://python-all.ru/3.14/library/collections.html#module-collections).10461047#### `setattr(object, name, value, /)`10481049Это аналог [`getattr()`](https://python-all.ru/3.14/library/functions.html#getattr). Аргументами являются объект, строка и произвольное значение. Строка может именовать существующий атрибут или новый атрибут. Функция присваивает значение атрибуту, если объект это позволяет. Например, `setattr(x, 'foobar', 123)` эквивалентно `x.foobar = 123`.10501051*name* не обязательно должен быть идентификатором Python, как определено в [Names (identifiers and keywords)](https://python-all.ru/3.14/reference/lexical_analysis.html#identifiers), если только объект не решает это принудительно, например, в пользовательском [`__getattribute__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__getattribute__) или через [`__slots__`](https://python-all.ru/3.14/reference/datamodel.html#object.__slots__). Атрибут, чьё имя не является идентификатором, не будет доступен через точечную нотацию, но будет доступен через [`getattr()`](https://python-all.ru/3.14/library/functions.html#getattr) и т.д.10521053> **Примечание**1054>1055> Поскольку [private name mangling](https://python-all.ru/3.14/reference/expressions.html#private-name-mangling) происходит на этапе компиляции, необходимо вручную исказить имя закрытого атрибута (атрибуты с двумя ведущими подчёркиваниями), чтобы задать его с помощью `setattr()`.10561057#### `class slice(stop, /)`10581059#### `class slice(start, stop, step=None, /)`10601061Возвращает объект [slice](https://python-all.ru/3.14/glossary.html#term-slice), представляющий набор индексов, заданных `range(start, stop, step)`. Аргументы *start* и *step* по умолчанию равны `None`.10621063Объекты slice также создаются при использовании [синтаксиса срезов](https://python-all.ru/3.14/reference/expressions.html#slicings). Например: `a[start:stop:step]` или `a[start:stop, i]`.10641065См. [`itertools.islice()`](https://python-all.ru/3.14/library/itertools.html#itertools.islice) для альтернативной версии, которая возвращает [итератор](https://python-all.ru/3.14/glossary.html#term-iterator).10661067#### `start`10681069#### `stop`10701071#### `step`10721073Эти атрибуты только для чтения устанавливаются в значения аргументов (или их значения по умолчанию). Они не имеют другой явной функциональности; однако они используются NumPy и другими сторонними пакетами.10741075Изменено в версии 3.12: Объекты slice теперь [хешируемы](https://python-all.ru/3.14/glossary.html#term-hashable) (при условии, что [`start`](https://python-all.ru/3.14/library/functions.html#slice.start), [`stop`](https://python-all.ru/3.14/library/functions.html#slice.stop) и [`step`](https://python-all.ru/3.14/library/functions.html#slice.step) хешируемы).10761077#### `sorted(iterable, /, *, key=None, reverse=False)`10781079Возвращает новый отсортированный список из элементов *итерируемого объекта*.10801081Имеет два необязательных аргумента, которые должны быть указаны как именованные.10821083*key* задаёт функцию одного аргумента, которая извлекает ключ сравнения из каждого элемента *итерируемого объекта* (например, `key=str.lower`). Значение по умолчанию – `None` (сравнивает элементы напрямую).10841085*reverse* – логическое значение. Если указано `True`, то элементы списка сортируются так, как если бы каждое сравнение было обратным.10861087Используйте [`functools.cmp_to_key()`](https://python-all.ru/3.14/library/functools.html#functools.cmp_to_key) для преобразования устаревшей функции *cmp* в функцию *key*.10881089Встроенная функция `sorted()` гарантированно устойчива. Сортировка называется устойчивой, если она не меняет относительный порядок элементов, которые сравниваются как равные. Это удобно при многоуровневой сортировке (например, сначала по отделу, затем по зарплатной категории).10901091Алгоритм сортировки использует только сравнения `<`. Хотя для сортировки достаточно определить метод [`__lt__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__lt__), [**PEP 8**](https://python-all.ru/3.14/library/functions.html) рекомендует реализовать все шесть [операций сравнения](https://python-all.ru/3.14/reference/expressions.html#comparisons). Это помогает избежать ошибок при использовании тех же данных с другими средствами упорядочивания, такими как [`max()`](https://python-all.ru/3.14/library/functions.html#max), которые полагаются на другой нижележащий метод. Реализация всех шести сравнений также предотвращает путаницу при сравнении смешанных типов, которые могут вызывать отражённый метод [`__gt__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__gt__).10921093Примеры сортировки и краткое руководство по сортировке см. в [Методы сортировки](https://python-all.ru/3.14/howto/sorting.html#sortinghowto).10941095#### `@staticmethod`10961097Преобразует метод в статический метод.10981099Статический метод не получает неявный первый аргумент. Чтобы объявить статический метод, используйте такую идиому:11001101```python1102class C:1103 @staticmethod1104 def f(arg1, arg2, argN): ...1105```11061107Форма `@staticmethod` является функцией [декоратора](https://python-all.ru/3.14/glossary.html#term-decorator) – подробнее см. в [Function definitions](https://python-all.ru/3.14/reference/compound_stmts.html#function).11081109Статический метод можно вызвать как от класса (например, `C.f()`), так и от экземпляра (например, `C().f()`). Кроме того, дескриптор [статического метода](https://python-all.ru/3.14/glossary.html#term-descriptor) тоже можно вызвать, поэтому его можно использовать в определении класса (например, `f()`).11101111Статические методы в Python похожи на статические методы в Java или C++. Также см. [`classmethod()`](https://python-all.ru/3.14/library/functions.html#classmethod) для альтернативного варианта, полезного для создания альтернативных конструкторов класса.11121113Как и все декораторы, `staticmethod` можно вызвать как обычную функцию и что-то сделать с её результатом. Это необходимо в тех случаях, когда нужна ссылка на функцию из тела класса и требуется избежать автоматического преобразования в метод экземпляра. Для таких случаев используйте следующую идиому:11141115```python1116def regular_function():1117 ...11181119class C:1120 method = staticmethod(regular_function)1121```11221123Дополнительную информацию о статических методах см. в [The standard type hierarchy](https://python-all.ru/3.14/reference/datamodel.html#types).11241125Изменено в версии 3.10: Статические методы теперь наследуют атрибуты метода ([`__module__`](https://python-all.ru/3.14/reference/datamodel.html#function.__module__), [`__name__`](https://python-all.ru/3.14/reference/datamodel.html#function.__name__), [`__qualname__`](https://python-all.ru/3.14/reference/datamodel.html#function.__qualname__), [`__doc__`](https://python-all.ru/3.14/reference/datamodel.html#function.__doc__) и [`__annotations__`](https://python-all.ru/3.14/reference/datamodel.html#function.__annotations__)), имеют новый атрибут `__wrapped__` и теперь могут вызываться как обычные функции.11261127#### `class str(*, encoding='utf-8', errors='strict')`11281129#### `class str(object)`11301131#### `class str(object, encoding, errors='strict')`11321133#### `class str(object, *, errors)`11341135Возвращает [`str`](https://python-all.ru/3.14/library/stdtypes.html#str)-версию *объекта*. Подробнее см. [`str()`](https://python-all.ru/3.14/library/stdtypes.html#str).11361137`str` – это встроенный строковый [класс](https://python-all.ru/3.14/glossary.html#term-class). Общую информацию о строках см. в [Text Sequence Type – str](https://python-all.ru/3.14/library/stdtypes.html#textseq).11381139#### `sum(iterable, /, start=0)`11401141Суммирует *start* и элементы *итерируемого объекта* слева направо и возвращает общую сумму. Элементы *итерируемого объекта* обычно являются числами, а начальное значение не может быть строкой.11421143Для некоторых сценариев использования существуют хорошие альтернативы `sum()`. Предпочтительный быстрый способ объединения последовательности строк – вызов `''.join(sequence)`. Для сложения чисел с плавающей запятой с повышенной точностью см. [`math.fsum()`](https://python-all.ru/3.14/library/math.html#math.fsum). Для объединения нескольких итерируемых объектов рассмотрите [`itertools.chain()`](https://python-all.ru/3.14/library/itertools.html#itertools.chain).11441145Изменено в версии 3.8: Параметр *start* теперь можно указывать как именованный аргумент.11461147Изменено в версии 3.12: Суммирование чисел с плавающей запятой переключено на алгоритм, обеспечивающий более высокую точность и лучшую коммутативность на большинстве сборок.11481149Изменено в версии 3.14: Добавлена специализация для суммирования комплексных чисел с использованием того же алгоритма, что и для суммирования чисел с плавающей запятой.11501151#### `class super`11521153#### `class super(type, object_or_type=None, /)`11541155Возвращает объект-посредник, который делегирует вызовы методов родительскому или родственному классу *type*. Это полезно для доступа к унаследованным методам, которые были переопределены в классе.11561157Параметр *object\_or\_type* определяет [порядок разрешения методов](https://python-all.ru/3.14/glossary.html#term-method-resolution-order), по которому будет выполняться поиск. Поиск начинается с класса, следующего сразу за *type*.11581159Например, если [`__mro__`](https://python-all.ru/3.14/reference/datamodel.html#type.__mro__) объекта *object\_or\_type* равно `D -> B -> C -> A -> object`, а значение *type* равно `B`, то [`super()`](https://python-all.ru/3.14/library/functions.html#super) выполняет поиск по `C -> A -> object`.11601161Атрибут [`__mro__`](https://python-all.ru/3.14/reference/datamodel.html#type.__mro__) класса, соответствующего *object\_or\_type*, перечисляет порядок поиска при разрешении методов, используемый как [`getattr()`](https://python-all.ru/3.14/library/functions.html#getattr), так и [`super()`](https://python-all.ru/3.14/library/functions.html#super). Этот атрибут является динамическим и может изменяться при любом обновлении иерархии наследования.11621163Если второй аргумент опущен, возвращается несвязанный объект super. Если второй аргумент является объектом, `isinstance(obj, type)` должно быть истинно. Если второй аргумент является типом, `issubclass(type2, type)` должно быть истинно (это полезно для методов класса).11641165При прямом вызове внутри обычного метода класса оба аргумента могут быть опущены («нуль-аргументный вызов `super()`»). В этом случае *type* будет внешним классом, а *obj* – первым аргументом непосредственно объемлющей функции (обычно `self`). (Это означает, что нуль-аргументный вызов `super()` не будет работать как ожидается внутри вложенных функций, включая генераторные выражения, которые неявно создают вложенные функции.)11661167Существует два типичных варианта использования *super*. В иерархии классов с одиночным наследованием *super* можно использовать для ссылки на родительские классы без явного указания их имен, что делает код более поддерживаемым. Это использование тесно параллельно использованию *super* в других языках программирования.11681169Второй вариант использования – поддержка кооперативного множественного наследования в динамической среде выполнения. Этот случай уникален для Python и не встречается в статически компилируемых языках или языках, поддерживающих только одиночное наследование. Это позволяет реализовать «ромбовидные диаграммы», где несколько базовых классов реализуют один и тот же метод. Хорошее проектирование требует, чтобы такие реализации имели одинаковую сигнатуру вызова во всех случаях (поскольку порядок вызовов определяется во время выполнения, поскольку этот порядок адаптируется к изменениям в иерархии классов и может включать родственные классы, неизвестные до выполнения).11701171Для обоих вариантов использования типичный вызов родительского класса выглядит так:11721173```python1174class C(B):1175 def method(self, arg):1176 super().method(arg) # Делает то же самое, что и:1177 # super(C, self).method(arg)1178```11791180В дополнение к поиску методов, [`super()`](https://python-all.ru/3.14/library/functions.html#super) также работает для поиска атрибутов. Один из возможных вариантов использования – вызов [дескрипторов](https://python-all.ru/3.14/glossary.html#term-descriptor) в родительском или родственном классе.11811182Обратите внимание, что [`super()`](https://python-all.ru/3.14/library/functions.html#super) реализован как часть процесса связывания для явного поиска атрибутов через точку, например `super().__getitem__(name)`. Он делает это, реализуя собственный метод [`__getattribute__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__getattribute__) для поиска классов в предсказуемом порядке, поддерживающем кооперативное множественное наследование. Соответственно, `super()` не определен для неявного поиска с помощью операторов или конструкций, таких как `super()[name]`.11831184Также обратите внимание, что, за исключением формы без аргументов, [`super()`](https://python-all.ru/3.14/library/functions.html#super) не ограничен использованием внутри методов. Форма с двумя аргументами точно задает аргументы и создает соответствующие ссылки. Форма без аргументов работает только внутри определения класса, так как компилятор заполняет необходимые детали для правильного извлечения определяемого класса, а также для доступа к текущему экземпляру в обычных методах.11851186Практические рекомендации по проектированию кооперативных классов с использованием [`super()`](https://python-all.ru/3.14/library/functions.html#super) см. в [руководстве по использованию super()](https://python-all.ru/3.14/library/functions.html).11871188Изменено в версии 3.14: Объекты `super` теперь являются [`pickleable`](https://python-all.ru/3.14/library/pickle.html#module-pickle) и [`copyable`](https://python-all.ru/3.14/library/copy.html#module-copy).11891190#### `class tuple(iterable=(), /)`11911192[`tuple`](https://python-all.ru/3.14/library/stdtypes.html#tuple) на самом деле не функция, а неизменяемый тип последовательности, как описано в [Кортежи](https://python-all.ru/3.14/library/stdtypes.html#typesseq-tuple) и [Типы последовательностей – list, tuple, range](https://python-all.ru/3.14/library/stdtypes.html#typesseq).11931194#### `class type(object, /)`11951196#### `class type(name, bases, dict, /, **kwargs)`11971198С одним аргументом возвращает тип объекта *object*. Возвращаемое значение – объект типа, как правило, тот же объект, что и возвращаемый [`object.__class__`](https://python-all.ru/3.14/reference/datamodel.html#object.__class__).11991200Встроенная функция [`isinstance()`](https://python-all.ru/3.14/library/functions.html#isinstance) рекомендуется для проверки типа объекта, поскольку она учитывает подклассы.12011202С тремя аргументами возвращает новый объект типа. По сути, это динамическая форма оператора [`class`](https://python-all.ru/3.14/reference/compound_stmts.html#class). Строка *name* – это имя класса, она становится атрибутом [`__name__`](https://python-all.ru/3.14/reference/datamodel.html#type.__name__). Кортеж *bases* содержит базовые классы и становится атрибутом [`__bases__`](https://python-all.ru/3.14/reference/datamodel.html#type.__bases__); если он пуст, добавляется [`object`](https://python-all.ru/3.14/library/functions.html#object) – конечный базовый класс всех классов. Словарь *dict* содержит определения атрибутов и методов тела класса; он может быть скопирован или обёрнут перед тем, как стать атрибутом [`__dict__`](https://python-all.ru/3.14/reference/datamodel.html#type.__dict__). Следующие два оператора создают идентичные объекты `type`:12031204```python1205>>> class X:1206... a = 11207...1208>>> X = type('X', (), dict(a=1))1209```12101211См. также:12121213- [Документация по атрибутам и методам классов](https://python-all.ru/3.14/reference/datamodel.html#class-attrs-and-methods).1214- [Объекты типа](https://python-all.ru/3.14/library/stdtypes.html#bltin-type-objects)12151216Именованные аргументы, переданные форме с тремя аргументами, передаются соответствующему механизму метакласса (обычно [`__init_subclass__()`](https://python-all.ru/3.14/reference/datamodel.html#object.__init_subclass__)) так же, как и ключевые слова в определении класса (кроме *metaclass*).12171218См. также [Настройка создания классов](https://python-all.ru/3.14/reference/datamodel.html#class-customization).12191220Изменено в версии 3.6: Подклассы `type`, не переопределяющие `type.__new__`, больше не могут использовать форму с одним аргументом для получения типа объекта.12211222#### `vars()`12231224#### `vars(object, /, )`12251226Возвращает атрибут [`__dict__`](https://python-all.ru/3.14/reference/datamodel.html#object.__dict__) для модуля, класса, экземпляра или любого другого объекта с атрибутом `__dict__`.12271228Такие объекты, как модули и экземпляры, имеют обновляемый атрибут [`__dict__`](https://python-all.ru/3.14/reference/datamodel.html#object.__dict__); однако другие объекты могут иметь ограничения на запись своих атрибутов `__dict__` (например, классы используют [`types.MappingProxyType`](https://python-all.ru/3.14/library/types.html#types.MappingProxyType) для предотвращения прямых изменений словаря).12291230Без аргумента `vars()` действует как [`locals()`](https://python-all.ru/3.14/library/functions.html#locals).12311232Исключение [`TypeError`](https://python-all.ru/3.14/library/exceptions.html#TypeError) возбуждается, если указан объект, но у него нет атрибута [`__dict__`](https://python-all.ru/3.14/reference/datamodel.html#object.__dict__) (например, если его класс определяет атрибут [`__slots__`](https://python-all.ru/3.14/reference/datamodel.html#object.__slots__)).12331234Изменено в версии 3.13: Результат вызова этой функции без аргументов был обновлён, как описано для встроенной [`locals()`](https://python-all.ru/3.14/library/functions.html#locals).12351236#### `zip(*iterables, strict=False)`12371238Производит итерацию по нескольким итерируемым объектам параллельно, формируя кортежи с элементом из каждого.12391240Пример:12411242```python1243>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']):1244... print(item)1245...1246(1, 'sugar')1247(2, 'spice')1248(3, 'everything nice')1249```12501251Более формально: `zip()` возвращает итератор кортежей, где *i*-й кортеж содержит *i*-й элемент из каждого из переданных итерируемых объектов.12521253Ещё один способ представить `zip()` – это превращение строк в столбцы и столбцов в строки. Это похоже на [транспонирование матрицы](https://python-all.ru/3.14/library/functions.html).12541255`zip()` ленив: элементы не будут обработаны, пока по итерируемому объекту не будет выполнена итерация, например, с помощью цикла `for` или помещения в [`list`](https://python-all.ru/3.14/library/stdtypes.html#list).12561257Следует учитывать, что итерируемые объекты, передаваемые в `zip()`, могут иметь разную длину; иногда это сделано намеренно, а иногда – из-за ошибки в коде, подготовившем эти итерируемые объекты. Python предлагает три разных подхода к решению этой проблемы:12581259- По умолчанию `zip()` останавливается, когда самый короткий итерируемый объект исчерпан. Оставшиеся элементы в более длинных итерируемых объектах игнорируются, обрезая результат до длины самого короткого:12601261 ```python1262 >>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum']))1263 [(0, 'fee'), (1, 'fi'), (2, 'fo')]1264 ```1265- `zip()` часто используется в случаях, когда предполагается, что итерируемые объекты имеют одинаковую длину. В таких случаях рекомендуется использовать параметр `strict=True`. Его вывод совпадает с обычным `zip()`:12661267 ```python1268 >>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True))1269 [('a', 1), ('b', 2), ('c', 3)]1270 ```12711272 В отличие от поведения по умолчанию, он вызывает исключение [`ValueError`](https://python-all.ru/3.14/library/exceptions.html#ValueError), если один итерируемый объект исчерпан раньше других:12731274 ```python1275 >>> for item in zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True):1276 ... print(item)1277 ...1278 (0, 'fee')1279 (1, 'fi')1280 (2, 'fo')1281 Traceback (most recent call last):1282 ...1283 ValueError: zip() argument 2 is longer than argument 11284 ```12851286 Без аргумента `strict=True` любая ошибка, приводящая к итерируемым объектам разной длины, будет скрыта, возможно, проявившись как труднообнаруживаемая ошибка в другой части программы.1287- Более короткие итерируемые объекты могут быть дополнены постоянным значением, чтобы все итерируемые объекты имели одинаковую длину. Это делается с помощью [`itertools.zip_longest()`](https://python-all.ru/3.14/library/itertools.html#itertools.zip_longest).12881289Крайние случаи: с одним аргументом-итерируемым объектом `zip()` возвращает итератор из 1-кортежей. Без аргументов возвращает пустой итератор.12901291Советы и хитрости:12921293- Гарантируется порядок вычисления итерируемых объектов слева направо. Это позволяет использовать идиому для группировки последовательности данных в группы длины n с помощью `zip(*[iter(s)]*n, strict=True)`. При этом *тот же самый* итератор повторяется `n` раз, так что каждый выходной кортеж содержит результат `n` вызовов итератора. Это приводит к разбиению входных данных на блоки длины n.1294- `zip()` в сочетании с оператором `*` можно использовать для распаковки списка:12951296 ```python1297 >>> x = [1, 2, 3]1298 >>> y = [4, 5, 6]1299 >>> list(zip(x, y))1300 [(1, 4), (2, 5), (3, 6)]1301 >>> x2, y2 = zip(*zip(x, y))1302 >>> x == list(x2) and y == list(y2)1303 True1304 ```13051306Изменено в версии 3.10: Добавлен аргумент `strict`.13071308#### `__import__(name, globals=None, locals=None, fromlist=(), level=0)`13091310> **Примечание**1311>1312> Это продвинутая функция, которая не требуется в повседневном программировании на Python, в отличие от [`importlib.import_module()`](https://python-all.ru/3.14/library/importlib.html#importlib.import_module).13131314Эта функция вызывается оператором [`import`](https://python-all.ru/3.14/reference/simple_stmts.html#import). Её можно заменить (импортировав модуль [`builtins`](https://python-all.ru/3.14/library/builtins.html#module-builtins) и присвоив `builtins.__import__`), чтобы изменить семантику оператора `import`, но делать это **настоятельно** не рекомендуется, так как обычно проще использовать перехватчики импорта (см. [**PEP 302**](https://python-all.ru/3.14/library/functions.html)) для достижения тех же целей, и это не вызывает проблем с кодом, предполагающим использование реализации импорта по умолчанию. Прямое использование `__import__()` также не рекомендуется, вместо него следует использовать [`importlib.import_module()`](https://python-all.ru/3.14/library/importlib.html#importlib.import_module).13151316Функция импортирует модуль *name*, потенциально используя переданные *globals* и *locals* для определения того, как интерпретировать имя в контексте пакета. *fromlist* задаёт имена объектов или подмодулей, которые должны быть импортированы из модуля, заданного *name*. Стандартная реализация вообще не использует свой аргумент *locals*, а *globals* использует только для определения контекста пакета оператора [`import`](https://python-all.ru/3.14/reference/simple_stmts.html#import).13171318*level* указывает, использовать ли абсолютный или относительный импорт. `0` (по умолчанию) означает только абсолютный импорт. Положительные значения *level* указывают количество родительских каталогов для поиска относительно каталога модуля, вызывающего `__import__()` (подробнее см. [**PEP 328**](https://python-all.ru/3.14/library/functions.html)).13191320Когда переменная *name* имеет вид `package.module`, обычно возвращается пакет верхнего уровня (имя до первой точки), а *не* модуль, названный *name*. Однако, если передан непустой аргумент *fromlist*, возвращается модуль, названный *name*.13211322Например, оператор `import spam` приводит к байт-коду, напоминающему следующий код:13231324```python1325spam = __import__('spam', globals(), locals(), [], 0)1326```13271328Оператор `import spam.ham` приводит к следующему вызову:13291330```python1331spam = __import__('spam.ham', globals(), locals(), [], 0)1332```13331334Обратите внимание, как `__import__()` возвращает модуль верхнего уровня, потому что это объект, который привязывается к имени оператором [`import`](https://python-all.ru/3.14/reference/simple_stmts.html#import).13351336С другой стороны, оператор `from spam.ham import eggs, sausage as saus` приводит к13371338```python1339_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)1340eggs = _temp.eggs1341saus = _temp.sausage1342```13431344Здесь модуль `spam.ham` возвращается из `__import__()`. Из этого объекта извлекаются имена для импорта и присваиваются соответствующим именам.13451346Если требуется просто импортировать модуль (возможно, внутри пакета) по имени, используйте [`importlib.import_module()`](https://python-all.ru/3.14/library/importlib.html#importlib.import_module).13471348Изменено в версии 3.3: Отрицательные значения *level* больше не поддерживаются (это также меняет значение по умолчанию на 0).13491350Изменено в версии 3.9: При использовании параметров командной строки [`-E`](https://python-all.ru/3.14/using/cmdline.html#cmdoption-E) или [`-I`](https://python-all.ru/3.14/using/cmdline.html#cmdoption-I) переменная окружения [`PYTHONCASEOK`](https://python-all.ru/3.14/using/cmdline.html#envvar-PYTHONCASEOK) теперь игнорируется.13511352Сноски13531354\[[1](https://python-all.ru/3.14/library/functions.html#id1)\]13551356Обратите внимание, что анализатор принимает только соглашение о концах строк в стиле Unix. Если вы читаете код из файла, убедитесь, что используете режим преобразования символов новой строки для преобразования концов строк в стиле Windows или Mac.1357