functions.md
1> **Источник:** https://python-all.ru/3.0/library/functions.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Встроенные функции89Интерпретатор Python включает ряд встроенных функций и типов, которые доступны всегда. Они перечислены здесь в алфавитном порядке.1011#### `[abs]abs(x)`1213Возвращает абсолютное значение числа. Аргументом может быть целое число или число с плавающей запятой. Если аргументом является комплексное число, возвращается его модуль.1415#### `[all]all(iterable)`1617Возвращает True, если все элементы *iterable* истинны. Эквивалентно:1819```python20def all(iterable):21 for element in iterable:22 if not element:23 return False24 return True25```2627#### `[any]any(iterable)`2829Возвращает True, если хотя бы один элемент *iterable* истинен. Эквивалентно:3031```python32def any(iterable):33 for element in iterable:34 if element:35 return True36 return False37```3839#### `[ascii]ascii(object)`4041Как и4243[`repr()`](https://python-all.ru/3.0/library/functions.html#repr)4445, возвращает строку, содержащую печатное представление объекта, но экранирует не-ASCII символы в строке, возвращаемой4647[`repr()`](https://python-all.ru/3.0/library/functions.html#repr)4849, используя escape-последовательности5051`\x`5253,5455`\u`5657или5859`\U`6061. Это создаёт строку, похожую на возвращаемую6263[`repr()`](https://python-all.ru/3.0/library/functions.html#repr)6465в Python 2.6667#### `[bin]bin(x)`6869Преобразует целое число в двоичную строку. Результат – корректное выражение Python. Если7071*x*7273не является объектом7475[`int`](https://python-all.ru/3.0/library/functions.html#int)7677, он должен определять метод7879[`__index__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__index__)8081, который возвращает целое число.8283#### `[bool]bool([x])`8485Преобразует значение в логический тип, используя стандартную процедуру проверки истинности. Если8687*x*8889равно false или опущено, возвращается9091[`False`](https://python-all.ru/3.0/library/constants.html#False)9293; в противном случае возвращается9495[`True`](https://python-all.ru/3.0/library/constants.html#True)9697.9899[`bool`](https://python-all.ru/3.0/library/functions.html#bool)100101– это также класс, являющийся подклассом102103[`int`](https://python-all.ru/3.0/library/functions.html#int)104105. Класс106107[`bool`](https://python-all.ru/3.0/library/functions.html#bool)108109не может быть далее подклассифицирован. Его единственные экземпляры – это110111[`False`](https://python-all.ru/3.0/library/constants.html#False)112113и114115[`True`](https://python-all.ru/3.0/library/constants.html#True)116117.118119#### `[bytearray]bytearray([arg[, encoding[, errors]]])`120121Возвращает новый массив байтов. Тип [`bytearray`](https://python-all.ru/3.0/library/functions.html#bytearray) является изменяемой последовательностью целых чисел в диапазоне 0 \<= x \< 256. Он поддерживает большинство обычных методов изменяемых последовательностей, описанных в [*Mutable Sequence Types*](https://python-all.ru/3.0/library/stdtypes.html#typesseq-mutable), а также большинство методов, которые есть у типа [`str`](https://python-all.ru/3.0/library/functions.html#str); см. [*Bytes and Byte Array Methods*](https://python-all.ru/3.0/library/stdtypes.html#bytes-methods).122123Необязательный параметр *arg* можно использовать для инициализации массива несколькими разными способами:124125- Если это *строка*, необходимо также указать параметры *encoding* (и, опционально, *errors*); затем [`bytearray()`](https://python-all.ru/3.0/library/functions.html#bytearray) преобразует строку в байты с помощью [`str.encode()`](https://python-all.ru/3.0/library/stdtypes.html#str.encode).126- Если это *целое число*, массив будет иметь указанный размер и будет инициализирован нулевыми байтами.127- Если это объект, соответствующий интерфейсу *buffer*, то для инициализации массива bytes будет использоваться буфер этого объекта только для чтения.128- Если это *iterable* (итерируемый объект), это должен быть итерируемый объект целых чисел в диапазоне `0 <= x < 256`, которые используются как начальное содержимое массива.129130Без аргументов создаётся массив размера 0.131132#### `[bytes]bytes([arg[, encoding[, errors]]])`133134Возвращает новый объект «bytes», который является неизменяемой последовательностью целых чисел в диапазоне `0 <= x < 256`. [`bytes`](https://python-all.ru/3.0/library/functions.html#bytes) – неизменяемая версия [`bytearray`](https://python-all.ru/3.0/library/functions.html#bytearray): у него те же неизменяющие методы и такое же поведение при индексации и срезах.135136Соответственно, аргументы конструктора интерпретируются так же, как для `buffer()`.137138Объекты bytes также можно создавать с помощью литералов, см. [*Литералы строк и bytes*](https://python-all.ru/3.0/reference/lexical_analysis.html#strings).139140#### `[chr]chr(i)`141142Возвращает строку из одного символа, кодовая точка Unicode которого равна целому числу143144*i*145146. Например,147148`chr(97)`149150возвращает строку151152`'a'`153154. Это обратная функция для155156[`ord()`](https://python-all.ru/3.0/library/functions.html#ord)157158. Допустимый диапазон аргумента зависит от того, как был сконфигурирован Python – это может быть UCS2 \[0..0xFFFF\] или UCS4 \[0..0x10FFFF\].159160[`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError)161162будет возбуждено, если163164*i*165166выходит за этот диапазон.167168#### `[classmethod]classmethod(function)`169170Возвращает метод класса для *функции*.171172Метод класса получает класс в качестве неявного первого аргумента, точно так же, как метод экземпляра получает экземпляр. Чтобы объявить метод класса, используйте эту идиому:173174```python175class C:176 @classmethod177 def f(cls, arg1, arg2, ...): ...178```179180Форма `@classmethod` является [*декоратором*](https://python-all.ru/3.0/glossary.html#term-decorator) функций – подробнее см. описание определений функций в разделе [*Function definitions*](https://python-all.ru/3.0/reference/compound_stmts.html#function).181182Он может быть вызван как на классе (например, `C.f()`), так и на экземпляре (например, `C().f()`). Экземпляр игнорируется, за исключением его класса. Если метод класса вызывается для производного класса, объект производного класса передаётся как неявный первый аргумент.183184Методы класса отличаются от статических методов C++ или Java. Если нужны они, см. [`staticmethod()`](https://python-all.ru/3.0/library/functions.html#staticmethod) в этом же разделе.185186Дополнительную информацию о методах класса см. в документации по стандартной иерархии типов в [*Стандартная иерархия типов*](https://python-all.ru/3.0/reference/datamodel.html#types).187188#### `[compile]compile(source, filename, mode[, flags[, dont_inherit]])`189190Компилирует *source* в объект кода или AST. Объекты кода могут выполняться инструкцией `exec` или вычисляться вызовом [`eval()`](https://python-all.ru/3.0/library/functions.html#eval). *source* может быть строкой или объектом AST. Обратитесь к документации модуля [`ast`](https://python-all.ru/3.0/library/ast.html#module-ast) за информацией о работе с объектами AST.191192Аргумент *filename* должен указывать файл, из которого был прочитан код; если код был не из файла, передайте какое-нибудь узнаваемое значение (обычно используется `'<string>'`).193194Аргумент *mode* указывает, какой код нужно компилировать; он может быть `'exec'`, если *source* состоит из последовательности инструкций, `'eval'`, если он состоит из одного выражения, или `'single'`, если он состоит из одной интерактивной инструкции (в последнем случае выражения, результатом которых является не `None`, будут выведены).195196Необязательные аргументы *flags* и *dont\_inherit* управляют тем, какие операторы будущего (см. [**PEP 236**](https://python-all.ru/3.0/library/functions.html)) влияют на компиляцию *source*. Если ни один из них не указан (или оба равны нулю), код компилируется с теми операторами будущего, которые действуют в коде, вызывающем compile. Если указан аргумент *flags*, а *dont\_inherit* не указан (или равен нулю), то операторы будущего, заданные аргументом *flags*, используются в дополнение к тем, которые использовались бы в любом случае. Если *dont\_inherit* – ненулевое целое число, то используется аргумент *flags* – операторы будущего, действующие в месте вызова compile, игнорируются.197198Future-инструкции задаются битами, которые можно объединять с помощью побитового ИЛИ, чтобы указать несколько инструкций. Необходимое битовое поле для указания конкретной возможности можно найти как атрибут `compiler_flag` у экземпляра `_Feature` в модуле [`__future__`](https://python-all.ru/3.0/library/__future__.html#module-__future__).199200Эта функция возбуждает исключение [`SyntaxError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.SyntaxError), если компилируемый исходный код некорректен, и [`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError), если исходный код содержит нулевые байты.201202> **Примечание**203>204> При компиляции строки с многострочными операторами концы строк должны быть представлены одним символом новой строки (`'\n'`), и входные данные должны завершаться по крайней мере одним символом новой строки. Если концы строк представлены как `'\r\n'`, используйте [`str.replace()`](https://python-all.ru/3.0/library/stdtypes.html#str.replace), чтобы заменить их на `'\n'`.205206#### `[complex]complex([real[, imag]])`207208Создаёт комплексное число со значением *real* + *imag*\*j или преобразует строку или число в комплексное число. Если первый параметр – строка, она будет интерпретирована как комплексное число, и функцию необходимо вызывать без второго параметра. Второй параметр никогда не может быть строкой. Каждый аргумент может быть любого числового типа (включая комплексный). Если *imag* опущен, по умолчанию он равен нулю, и функция выступает в роли функции преобразования числовых типов, такой как [`int()`](https://python-all.ru/3.0/library/functions.html#int) и [`float()`](https://python-all.ru/3.0/library/functions.html#float). Если оба аргумента опущены, возвращает `0j`.209210Тип complex описан в разделе [*Числовые типы – int, float, complex*](https://python-all.ru/3.0/library/stdtypes.html#typesnumeric).211212#### `[delattr]delattr(object, name)`213214Это аналог215216[`setattr()`](https://python-all.ru/3.0/library/functions.html#setattr)217218. Аргументы – объект и строка. Строка должна быть именем одного из атрибутов объекта. Функция удаляет именованный атрибут, если объект это позволяет. Например,219220`delattr(x, 'foobar')`221222эквивалентно223224`del x.foobar`225226.227228#### `dict([arg])`229230Создаёт новый словарь данных, опционально с элементами, взятыми из *arg*. Тип словаря описан в [*Mapping Types – dict*](https://python-all.ru/3.0/library/stdtypes.html#typesmapping).231232Другие контейнеры см. во встроенных классах [`list`](https://python-all.ru/3.0/library/functions.html#list), [`set`](https://python-all.ru/3.0/library/stdtypes.html#set), [`tuple`](https://python-all.ru/3.0/library/functions.html#tuple) и модуле [`collections`](https://python-all.ru/3.0/library/collections.html#module-collections).233234#### `[dir]dir([object])`235236Без аргументов возвращает список имён в текущей локальной области видимости. Если передан аргумент, пытается вернуть список допустимых атрибутов этого объекта.237238Если у объекта есть метод с именем [`__dir__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__dir__), этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, реализующим собственную функцию [`__getattr__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getattr__) или [`__getattribute__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getattribute__), настраивать то, как [`dir()`](https://python-all.ru/3.0/library/functions.html#dir) сообщает об их атрибутах.239240Если объект не предоставляет [`__dir__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__dir__), функция старается собрать информацию из атрибута `__dict__` объекта (если он определён) и из его объекта-типа. Полученный список не обязательно полный и может быть неточным, если у объекта есть собственная реализация [`__getattr__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getattr__).241242Механизм [`dir()`](https://python-all.ru/3.0/library/functions.html#dir) по умолчанию работает по-разному для разных типов объектов, поскольку он пытается предоставить наиболее уместную, а не полную, информацию:243244- Если объект является модулем, список содержит имена атрибутов этого модуля.245- Если объект является типом или классом, список содержит имена его атрибутов, а также (рекурсивно) атрибутов его базовых классов.246- В остальных случаях список содержит имена атрибутов объекта, имена атрибутов его класса и (рекурсивно) атрибутов базовых классов его класса.247248Полученный список сортируется по алфавиту. Например:249250```python251>>> import struct252>>> dir() # doctest: +SKIP253['__builtins__', '__doc__', '__name__', 'struct']254>>> dir(struct) # doctest: +NORMALIZE_WHITESPACE255['Struct', '__builtins__', '__doc__', '__file__', '__name__',256 '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',257 'unpack', 'unpack_from']258>>> class Foo(object):259... def __dir__(self):260... return ["kan", "ga", "roo"]261...262>>> f = Foo()263>>> dir(f)264['ga', 'kan', 'roo']265```266267> **Примечание**268>269> Поскольку [`dir()`](https://python-all.ru/3.0/library/functions.html#dir) предоставляется в основном для удобства использования в интерактивной подсказке, он скорее старается дать интересный набор имён, чем строго или последовательно определённый, и его детальное поведение может меняться между версиями. Например, атрибуты метакласса не включаются в результирующий список, если аргументом является класс.270271#### `[divmod]divmod(a, b)`272273Принимает два (не комплексных) числа в качестве аргументов и возвращает пару чисел, состоящую из их частного и остатка при целочисленном делении. Для смешанных типов операндов применяются правила бинарных арифметических операторов. Для целых чисел результат совпадает с274275`(a // b, a % b)`276277. Для чисел с плавающей запятой результат равен278279`(q, a % b)`280281, где282283*q*284285обычно равно286287`math.floor(a / b)`288289, но может быть на 1 меньше. В любом случае290291`q * b + a % b`292293очень близко к294295*a*296297, если298299`a % b`300301отлично от нуля, то имеет тот же знак, что и302303*b*304305, а306307`0 <= abs(a % b) < abs(b)`308309.310311#### `[enumerate]enumerate(iterable[, start=0])`312313Возвращает объект enumerate. *iterable* должен быть последовательностью, [*итератором*](https://python-all.ru/3.0/glossary.html#term-iterator) или другим объектом, поддерживающим итерацию. Метод `__next__()` итератора, возвращаемого [`enumerate()`](https://python-all.ru/3.0/library/functions.html#enumerate), возвращает кортеж, содержащий счётчик (от *start*, по умолчанию равный 0) и соответствующее значение, полученное при итерации по *iterable*. [`enumerate()`](https://python-all.ru/3.0/library/functions.html#enumerate) полезен для получения индексированной серии: `(0, seq[0])`, `(1, seq[1])`, `(2, seq[2])`, .... Например:314315```python316>>> for i, season in enumerate(['Spring', 'Summer', 'Fall', 'Winter']):317... print(i, season)3180 Spring3191 Summer3202 Fall3213 Winter322```323324#### `[eval]eval(expression[, globals[, locals]])`325326Аргументами являются строка и необязательные globals и locals. Если они указаны, *globals* должен быть словарём. Если указаны, *locals* может быть любым отображением (mapping).327328Аргумент *expression* разбирается и вычисляется как выражение Python (технически – список условий) с использованием словарей *globals* и *locals* в качестве глобального и локального пространств имён. Если словарь *globals* присутствует и в нём нет '\_\_builtins\_\_', текущие глобальные переменные копируются в *globals* перед разбором *expression*. Это означает, что *expression* обычно имеет полный доступ к стандартному модулю [`builtins`](https://python-all.ru/3.0/library/builtins.html#module-builtins), и ограниченные окружения распространяются. Если словарь *locals* опущен, по умолчанию он равен *globals*. Если оба словаря опущены, выражение выполняется в том окружении, где вызвана [`eval()`](https://python-all.ru/3.0/library/functions.html#eval). Возвращаемое значение – результат вычисления выражения. Синтаксические ошибки сообщаются как исключения. Пример:329330```python331>>> x = 1332>>> eval('x+1')3332334```335336Эта функция также может использоваться для выполнения произвольных объектов кода (таких как созданные с помощью [`compile()`](https://python-all.ru/3.0/library/functions.html#compile)). В этом случае передавайте объект кода вместо строки. Если объект кода был скомпилирован с `'exec'` в качестве аргумента *kind*, возвращаемое значение [`eval()`](https://python-all.ru/3.0/library/functions.html#eval) будет `None`.337338Подсказки: динамическое выполнение инструкций поддерживается функцией [`exec()`](https://python-all.ru/3.0/library/functions.html#exec). Функции [`globals()`](https://python-all.ru/3.0/library/functions.html#globals) и [`locals()`](https://python-all.ru/3.0/library/functions.html#locals) возвращают текущий глобальный и локальный словари соответственно, которые могут быть полезны для передачи для использования с [`eval()`](https://python-all.ru/3.0/library/functions.html#eval) или [`exec()`](https://python-all.ru/3.0/library/functions.html#exec).339340#### `[exec]exec(object[, globals[, locals]])`341342Эта функция поддерживает динамическое выполнение кода Python. *object* должен быть строкой или объектом кода. Если это строка, она разбирается как набор инструкций Python, который затем выполняется (если не возникает синтаксическая ошибка). Если это объект кода, он просто выполняется. Во всех случаях выполняемый код должен быть корректным как файловый ввод (см. раздел «File input» в справочном руководстве). Имейте в виду, что инструкции [`return`](https://python-all.ru/3.0/reference/simple_stmts.html#return) и [`yield`](https://python-all.ru/3.0/reference/simple_stmts.html#yield) не могут использоваться вне определений функций даже в контексте кода, переданного функции [`exec()`](https://python-all.ru/3.0/library/functions.html#exec). Возвращаемое значение – `None`.343344Во всех случаях, если необязательные части опущены, код выполняется в текущей области видимости. Если указан только *globals*, он должен быть словарём, который будет использоваться как для глобальных, так и для локальных переменных. Если указаны *globals* и *locals*, они используются для глобальных и локальных переменных соответственно. Если указан, *locals* может быть любым объектом отображения.345346Если словарь *globals* не содержит значения для ключа `__builtins__`, под этот ключ вставляется ссылка на словарь встроенного модуля [`builtins`](https://python-all.ru/3.0/library/builtins.html#module-builtins). Таким образом можно контролировать, какие встроенные функции доступны выполняемому коду, вставив собственный словарь `__builtins__` в *globals* перед передачей его в [`exec()`](https://python-all.ru/3.0/library/functions.html#exec).347348> **Примечание**349>350> Встроенные функции [`globals()`](https://python-all.ru/3.0/library/functions.html#globals) и [`locals()`](https://python-all.ru/3.0/library/functions.html#locals) возвращают текущий глобальный и локальный словари соответственно, что может быть полезно для их передачи в качестве второго и третьего аргумента в [`exec()`](https://python-all.ru/3.0/library/functions.html#exec).351352> **Предупреждение**353>354> Словарь *locals* по умолчанию действует так, как описано ниже для функции [`locals()`](https://python-all.ru/3.0/library/functions.html#locals): не следует пытаться изменять словарь *locals* по умолчанию. Передайте явный словарь *locals*, если нужно увидеть влияние кода на *locals* после возврата из функции [`exec()`](https://python-all.ru/3.0/library/functions.html#exec).355356#### `[filter]filter(function, iterable)`357358Создаёт итератор из тех элементов *iterable*, для которых *function* возвращает истину. *iterable* может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если *function* равно `None`, предполагается тождественная функция, то есть удаляются все элементы *iterable*, которые являются ложными.359360Обратите внимание, что `filter(function, iterable)` эквивалентно генераторному выражению `(item for item in iterable if function(item))`, если function не равно `None`, и `(item for item in iterable if item)`, если function равно `None`.361362#### `[float]float([x])`363364Преобразует строку или число в число с плавающей запятой. Если аргумент – строка, она должна содержать десятичное число или число с плавающей запятой, возможно, со знаком и окружённое пробелами. Аргументом также может быть `'[+|-]nan'` или `'[+|-]inf'`. В противном случае аргумент может быть целым числом или числом с плавающей запятой; возвращается число с плавающей запятой с тем же значением (в пределах точности чисел с плавающей запятой Python). Если аргумент не указан, возвращается `0.0`.365366> **Примечание**367>368> When passing in a string, values for NaN and Infinity may be returned, depending on the underlying C library. Float accepts the strings `'nan'`, `'inf'` and `'-inf'` for NaN and positive or negative infinity. The case and a leading + are ignored as well as a leading - is ignored for NaN. Float always represents NaN and infinity as `nan`, `inf` or `-inf`.369370Тип float описан в разделе [*Числовые типы – int, float, complex*](https://python-all.ru/3.0/library/stdtypes.html#typesnumeric).371372#### `[format]format(value[, format_spec])`373374Преобразует строку или число в «форматированное» представление, управляемое *format\_spec*. Интерпретация *format\_spec* зависит от типа аргумента *value*, однако существует стандартный синтаксис форматирования, который используется большинством встроенных типов: [*Мини-язык спецификации формата*](https://python-all.ru/3.0/library/string.html#formatspec).375376> **Примечание**377>378> `format(value, format_spec)` просто вызывает `value.__format__(format_spec)`.379380#### `frozenset([iterable])`381382Return a frozenset object, optionally with elements taken from *iterable*. The frozenset type is described in [*Set Types – set, frozenset*](https://python-all.ru/3.0/library/stdtypes.html#types-set).383384Для других контейнеров см. встроенные классы [`dict`](https://python-all.ru/3.0/library/stdtypes.html#dict), [`list`](https://python-all.ru/3.0/library/functions.html#list), [`tuple`](https://python-all.ru/3.0/library/functions.html#tuple), а также модуль [`collections`](https://python-all.ru/3.0/library/collections.html#module-collections).385386#### `[getattr]getattr(object, name[, default])`387388Возвращает значение именованного атрибута объекта389390*object*391392.393394*name*395396должен быть строкой. Если строка является именем одного из атрибутов объекта, результатом будет значение этого атрибута. Например,397398`getattr(x, 'foobar')`399400эквивалентно401402`x.foobar`403404. Если именованный атрибут не существует, возвращается405406*default*407408, если он указан, в противном случае возбуждается409410[`AttributeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.AttributeError)411412.413414#### `[globals]globals()`415416Возвращает словарь, представляющий текущую таблицу глобальных символов. Это всегда словарь текущего модуля (внутри функции или метода это модуль, где она определена, а не модуль, из которого она вызывается).417418#### `[hasattr]hasattr(object, name)`419420Аргументами являются объект и строка. Результат –421422`True`423424, если строка является именем одного из атрибутов объекта, и425426`False`427428в противном случае. (Реализовано вызовом429430`getattr(object, name)`431432и проверкой, вызывает ли он исключение.)433434#### `[hash]hash(object)`435436Возвращает хеш-значение объекта (если оно есть). Хеш-значения являются целыми числами. Они используются для быстрого сравнения ключей словаря при поиске в словаре. Числовые значения, которые сравниваются как равные, имеют одинаковое хеш-значение (даже если они разных типов, как в случае 1 и 1.0).437438#### `[help]help([object])`439440Запускает встроенную справочную систему. (Эта функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная справочная система запускается на консоли интерпретатора. Если аргумент – строка, то она ищется как имя модуля, функции, класса, метода, ключевого слова или темы документации, и на консоль выводится страница справки. Если аргумент – объект любого другого типа, генерируется страница справки по этому объекту.441442Эта функция добавляется во встроенное пространство имён модулем [`site`](https://python-all.ru/3.0/library/site.html#module-site).443444#### `[hex]hex(x)`445446Преобразует целое число в шестнадцатеричную строку. Результат является корректным Python выражением. Если447448*x*449450не является объектом451452[`int`](https://python-all.ru/3.0/library/functions.html#int)453454, он должен определять метод455456[`__index__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__index__)457458, который возвращает целое число.459460#### `[id]id(object)`461462Возвращает «идентификатор» объекта. Это целое число, которое гарантированно является уникальным и постоянным для данного объекта на протяжении его жизни. Два объекта с неперекрывающимися временами жизни могут иметь одно и то же значение463464[`id()`](https://python-all.ru/3.0/library/functions.html#id)465466. (Примечание по реализации: это адрес объекта.)467468#### `[input]input([prompt])`469470Если аргумент *prompt* присутствует, он выводится в стандартный вывод без завершающего перевода строки. Затем функция читает строку из ввода, преобразует её в строку (удаляя завершающий перевод строки) и возвращает её. Когда достигается конец файла (EOF), возбуждается [`EOFError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.EOFError). Пример:471472```python473>>> s = input('--> ')474--> Monty Python's Flying Circus475>>> s476"Monty Python's Flying Circus"477```478479Если модуль [`readline`](https://python-all.ru/3.0/library/readline.html#module-readline) был загружен, то [`input()`](https://python-all.ru/3.0/library/functions.html#input) будет использовать его для предоставления расширенных возможностей редактирования строк и истории.480481#### `[int]int([number | string[, radix]])`482483Преобразует число или строку в целое число. Если аргументы не переданы, возвращает `0`. Если передано число, возвращает `number.__int__()`. При преобразовании чисел с плавающей запятой в целые происходит отбрасывание дробной части в сторону нуля. Строка должна быть целочисленным литералом в указанной системе счисления, необязательно с префиксом '+' или '-' (без пробела между ними) и необязательно окруженным пробелами. Литерал по основанию n состоит из цифр от 0 до n-1, причем 'a' – 'z' (или 'A' – 'Z') имеют значения от 10 до 35. Система счисления по умолчанию – 10. Допустимые значения: 0 и 2-36. Литералы с основаниями 2, 8 и 16 могут необязательно иметь префиксы `0b`/`0B`, `0o`/`0O` или `0x`/`0X`, как и целочисленные литералы в коде. Основание 0 означает интерпретацию точно как литерала кода, так что фактическим основанием будет 2, 8, 10 или 16, и поэтому `int('010', 0)` недопустимо, тогда как `int('010')` допустимо, а также `int('010', 8)`.484485Целочисленный тип описан в разделе [*Числовые типы – int, float, complex*](https://python-all.ru/3.0/library/stdtypes.html#typesnumeric).486487#### `[isinstance]isinstance(object, classinfo)`488489Return true if the490491*object*492493argument is an instance of the494495*classinfo*496497argument, or of a (direct or indirect) subclass thereof. If498499*object*500501is not an object of the given type, the function always returns false. If502503*classinfo*504505is not a class (type object), it may be a tuple of type objects, or may recursively contain other such tuples (other sequence types are not accepted). If506507*classinfo*508509is not a type or tuple of types and such tuples, a510511[`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError)512513exception is raised.514515#### `[issubclass]issubclass(class, classinfo)`516517Return true if518519*class*520521is a subclass (direct or indirect) of522523*classinfo*524525. A class is considered a subclass of itself.526527*classinfo*528529may be a tuple of class objects, in which case every entry in530531*classinfo*532533will be checked. In any other case, a534535[`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError)536537exception is raised.538539#### `[iter]iter(o[, sentinel])`540541Возвращает объект542543[*итератора*](https://python-all.ru/3.0/glossary.html#term-iterator)544545. Первый аргумент интерпретируется совершенно по-разному в зависимости от наличия второго аргумента. Без второго аргумента546547*o*548549должен быть объектом-коллекцией, поддерживающим протокол итерации (метод550551[`__iter__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__iter__)552553), или он должен поддерживать протокол последовательности (метод554555[`__getitem__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getitem__)556557с целочисленными аргументами, начиная с558559`0`560561). Если он не поддерживает ни один из этих протоколов, возбуждается562563[`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError)564565. Если задан второй аргумент566567*sentinel*568569, то570571*o*572573должен быть вызываемым объектом. Созданный в этом случае итератор будет вызывать574575*o*576577без аргументов для каждого вызова своего метода578579`__next__()`580581; если возвращённое значение равно582583*sentinel*584585, будет возбуждено586587[`StopIteration`](https://python-all.ru/3.0/library/exceptions.html#exceptions.StopIteration)588589, в противном случае будет возвращено значение.590591#### `[len]len(s)`592593Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (строка, кортеж или список) или отображение (словарь).594595#### `[list]list([iterable])`596597Возвращает список, элементы которого такие же и расположены в том же порядке, что и элементы *iterable*. *iterable* может быть последовательностью, контейнером, поддерживающим итерацию, или объектом-итератором. Если *iterable* уже является списком, создаётся и возвращается его копия, аналогично `iterable[:]`. Например, `list('abc')` возвращает `['a', 'b', 'c']`, а `list( (1, 2, 3) )` возвращает `[1, 2, 3]`. Если аргумент не передан, возвращает новый пустой список `[]`.598599[`list`](https://python-all.ru/3.0/library/functions.html#list) – изменяемый тип последовательности, как описано в [*Sequence Types – str, bytes, bytearray, list, tuple, range*](https://python-all.ru/3.0/library/stdtypes.html#typesseq).600601#### `[locals]locals()`602603Обновляет и возвращает словарь, представляющий текущую таблицу локальных символов.604605> **Предупреждение**606>607> Содержимое этого словаря не следует изменять; изменения могут не повлиять на значения локальных переменных, используемых интерпретатором.608609Свободные переменные возвращаются [`locals()`](https://python-all.ru/3.0/library/functions.html#locals) при его вызове в блоке функции. Изменения свободных переменных могут не повлиять на значения, используемые интерпретатором. Свободные переменные не возвращаются в блоках классов.610611#### `[map]map(function, iterable, ...)`612613Возвращает итератор, который применяет614615*function*616617к каждому элементу618619*iterable*620621и возвращает результаты. Если переданы дополнительные аргументы622623*iterable*624625, то626627*function*628629должна принимать столько же аргументов и применяется к элементам из всех итерабельных объектов параллельно. При наличии нескольких итерабельных объектов итератор останавливается, когда самый короткий из них исчерпан.630631#### `[max]max(iterable[, args...], *[, key])`632633С одним аргументом *iterable* возвращает наибольший элемент непустой итерабельной последовательности (например, строки, кортежа или списка). С несколькими аргументами возвращает наибольший из них.634635Необязательный аргумент *key*, передаваемый только по ключевому слову, задаёт функцию упорядочивания с одним аргументом, подобную используемой в `list.sort()`.636637#### `memoryview(obj)`638639Возвращает объект «memory view», созданный из переданного аргумента. Подробнее см.640641[*Типы memoryview*](https://python-all.ru/3.0/library/stdtypes.html#typememoryview)642643.644645#### `[min]min(iterable[, args...], *[, key])`646647С одним аргументом *iterable* возвращает наименьший элемент непустой итерируемой последовательности (например, строки, кортежа или списка). С несколькими аргументами возвращает наименьший из аргументов.648649Необязательный аргумент *key*, передаваемый только по ключевому слову, задаёт функцию упорядочивания с одним аргументом, подобную используемой в `list.sort()`.650651#### `[next]next(iterator[, default])`652653Извлекает следующий элемент из654655*iterator*656657, вызывая его метод658659`__next__()`660661. Если передан662663*default*664665, он возвращается, когда итератор исчерпан; в противном случае возбуждается исключение666667[`StopIteration`](https://python-all.ru/3.0/library/exceptions.html#exceptions.StopIteration)668669.670671#### `[object]object()`672673Возвращает новый объект без свойств. [`object`](https://python-all.ru/3.0/library/functions.html#object) – базовый класс для всех классов. Он имеет методы, общие для всех экземпляров классов Python. Эта функция не принимает аргументов.674675> **Примечание**676>677> [`object`](https://python-all.ru/3.0/library/functions.html#object) *не* имеет `__dict__`, поэтому нельзя присваивать произвольные атрибуты экземпляру класса [`object`](https://python-all.ru/3.0/library/functions.html#object).678679#### `[oct]oct(x)`680681Преобразует целое число в восьмеричную строку. Результат – допустимое выражение Python. Если682683*x*684685не является объектом686687[`int`](https://python-all.ru/3.0/library/functions.html#int)688689Python, он должен определить метод690691[`__index__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__index__)692693, возвращающий целое число.694695#### `[open]open(file[, mode='r'[, buffering=None[, encoding=None[, errors=None[, newline=None[, closefd=True]]]]]])`696697Открыть файл. Если файл не удалось открыть, возбуждается исключение [`IOError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.IOError).698699*file* – это либо строка, либо байтовый объект, задающий имя (и путь, если файл не находится в текущей рабочей директории) открываемого файла, либо целочисленный файловый дескриптор оборачиваемого файла. (Если передан файловый дескриптор, он будет закрыт при закрытии возвращаемого объекта ввода-вывода, если только *closefd* не установлен в `False`.)700701*mode* – необязательная строка, определяющая режим, в котором открывается файл. По умолчанию используется `'r'`, что означает открытие для чтения в текстовом режиме. Другие распространённые значения: `'w'` для записи (при этом файл усекается, если он уже существует) и `'a'` для добавления (что на *некоторых* системах Unix означает, что *все* операции записи добавляются в конец файла независимо от текущей позиции). В текстовом режиме, если *encoding* не указана, используемая кодировка зависит от платформы. (Для чтения и записи сырых байтов используйте двоичный режим и оставьте *encoding* неуказанным.) Доступные режимы:702703| Символ | Значение |704| --- | --- |705| `'r'` | открытие для чтения (по умолчанию) |706| `'w'` | открытие для записи, с предварительным усечением файла |707| `'a'` | открытие для записи, дозапись в конец файла, если он существует |708| `'b'` | двоичный режим |709| `'t'` | текстовый режим (по умолчанию) |710| `'+'` | открывает дисковый файл для обновления (чтения и записи) |711| `'U'` | универсальный режим перевода строк (для обратной совместимости; не нужен для нового кода) |712713Режим по умолчанию – `'rt'` (открытие для чтения текста). Для бинарного произвольного доступа режим `'w+b'` открывает и усекает файл до 0 байт, а `'r+b'` открывает файл без усечения.714715Python различает файлы, открытые в бинарном и текстовом режимах, даже если базовая операционная система этого не делает. Файлы, открытые в бинарном режиме (добавление `'b'` к аргументу *mode*), возвращают содержимое как объекты `bytes` без какого-либо декодирования. В текстовом режиме (по умолчанию или при добавлении `'t'` к аргументу *mode*) содержимое файла возвращается в виде строк, при этом байты сначала декодируются с использованием кодировки, зависящей от платформы, или указанной *encoding*, если она задана.716717*buffering* – необязательное целое число, используемое для установки политики буферизации. По умолчанию включена полная буферизация. Передайте 0, чтобы отключить буферизацию (допустимо только в бинарном режиме), 1 для построчной буферизации и целое число \> 1 для полной буферизации.718719*encoding* – имя кодировки, используемой для декодирования или кодирования файла. Следует использовать только в текстовом режиме. Кодировка по умолчанию зависит от платформы, но можно передать любую кодировку, поддерживаемую Python. Список поддерживаемых кодировок см. в модуле [`codecs`](https://python-all.ru/3.0/library/codecs.html#module-codecs).720721*errors* – необязательная строка, задающая способ обработки ошибок кодирования – этот аргумент не следует использовать в бинарном режиме. Передайте `'strict'`, чтобы возбуждать исключение [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError) при наличии ошибки кодирования (значение по умолчанию `None` имеет тот же эффект), или передайте `'ignore'` для игнорирования ошибок. (Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных.) Список допустимых строк ошибок кодирования см. в документации к [`codecs.register()`](https://python-all.ru/3.0/library/codecs.html#codecs.register).722723*newline* управляет работой режима универсального перевода строк (применяется только в текстовом режиме). Может принимать значения `None`, `''`, `'\n'`, `'\r'` и `'\r\n'`. Работает следующим образом:724725- При чтении, если *newline* равен `None`, включается режим универсального перевода строк. Строки во входных данных могут заканчиваться на `'\n'`, `'\r'` или `'\r\n'`, и они преобразуются в `'\n'` перед возвратом вызывающему коду. Если он равен `''`, режим универсального перевода строк также включён, но концы строк возвращаются вызывающему коду без преобразования. Если он имеет любое другое допустимое значение, входные строки завершаются только заданной строкой, и конец строки возвращается без преобразования.726- При записи, если *newline* равен `None`, все записанные символы `'\n'` преобразуются в системный разделитель строк по умолчанию [`os.linesep`](https://python-all.ru/3.0/library/os.html#os.linesep). Если *newline* равен `''`, преобразование не выполняется. Если *newline* имеет любое другое допустимое значение, все записанные символы `'\n'` преобразуются в заданную строку.727728Если *closefd* равен `False`, базовый файловый дескриптор останется открытым при закрытии файла. Это не работает, если задано имя файла; в этом случае должно быть `True`.729730См. также модули для работы с файлами, такие как [`fileinput`](https://python-all.ru/3.0/library/fileinput.html#module-fileinput), [`io`](https://python-all.ru/3.0/library/io.html#module-io) (где объявлена [`open()`](https://python-all.ru/3.0/library/functions.html#open)), [`os`](https://python-all.ru/3.0/library/os.html#module-os), [`os.path`](https://python-all.ru/3.0/library/os.path.html#module-os.path), [`tempfile`](https://python-all.ru/3.0/library/tempfile.html#module-tempfile) и [`shutil`](https://python-all.ru/3.0/library/shutil.html#module-shutil).731732#### `[ord]ord(c)`733734Принимает строку длиной в один символ и возвращает целое число, представляющее кодовую точку Unicode этого символа. Например, `ord('a')` возвращает целое число `97`, а `ord('\u2020')` возвращает `8224`. Это обратная функция к [`chr()`](https://python-all.ru/3.0/library/functions.html#chr).735736Если длина аргумента не равна единице, будет возбуждено исключение [`TypeError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.TypeError). (Если Python собран с UCS2 Unicode, кодовая точка символа должна находиться в диапазоне \[0..65535\] включительно; в противном случае длина строки равна двум!)737738#### `[pow]pow(x, y[, z])`739740Возвращает *x* в степени *y*; если указан *z*, возвращает *x* в степени *y* по модулю *z* (вычисляется эффективнее, чем `pow(x, y) % z`). Двухаргументная форма `pow(x, y)` эквивалентна использованию оператора возведения в степень: `x**y`.741742Аргументы должны быть числовых типов. При смешанных типах операндов применяются правила приведения для бинарных арифметических операторов. Для операндов типа [`int`](https://python-all.ru/3.0/library/functions.html#int) результат имеет тот же тип, что и операнды (после приведения), если только второй аргумент не отрицателен; в этом случае все аргументы преобразуются в float и возвращается результат типа float. Например, `10**2` возвращает `100`, а `10**-2` возвращает `0.01`. Если второй аргумент отрицателен, третий аргумент должен быть опущен. Если указан *z*, то *x* и *y* должны быть целочисленными, а *y* – неотрицательным.743744#### `[print]print([object, ...][, sep=' '][, end='\n'][, file=sys.stdout])`745746Выводит *object* в поток *file*, разделяя их через *sep* и завершая *end*. *sep*, *end* и *file*, если они присутствуют, должны передаваться как именованные аргументы.747748Все неименованные аргументы преобразуются в строки, как это делает [`str()`](https://python-all.ru/3.0/library/functions.html#str), и записываются в поток, разделённые *sep* и завершаемые *end*. Оба параметра – *sep* и *end* – должны быть строками; они также могут быть `None`, что означает использование значений по умолчанию. Если *object* не передан, [`print()`](https://python-all.ru/3.0/library/functions.html#print) просто выведет *end*.749750Аргумент *file* должен быть объектом, имеющим метод `write(string)`; если он не указан или равен `None`, будет использоваться [`sys.stdout`](https://python-all.ru/3.0/library/sys.html#sys.stdout).751752#### `[property]property([fget[, fset[, fdel[, doc]]]])`753754Возвращает атрибут property.755756*fget* – функция для получения значения атрибута, *fset* – функция для установки, а *fdel* – функция для удаления атрибута. Обычное использование – определение управляемого атрибута x:757758```python759class C(object):760 def __init__(self):761 self._x = None762763 def getx(self):764 return self._x765 def setx(self, value):766 self._x = value767 def delx(self):768 del self._x769 x = property(getx, setx, delx, "I'm the 'x' property.")770```771772Если указан, *doc* будет строкой документации свойства. В противном случае свойство копирует строку документации *fget* (если она существует). Это позволяет легко создавать свойства только для чтения, используя [`property()`](https://python-all.ru/3.0/library/functions.html#property) в качестве [*декоратора*](https://python-all.ru/3.0/glossary.html#term-decorator):773774```python775class Parrot(object):776 def __init__(self):777 self._voltage = 100000778779 @property780 def voltage(self):781 """Get the current voltage."""782 return self._voltage783```784785превращает метод `voltage()` в «геттер» для атрибута только для чтения с тем же именем.786787Объект property имеет методы `getter`, `setter` и `deleter`, которые можно использовать как декораторы: они создают копию свойства с соответствующей функцией доступа, установленной на декорированную функцию. Это лучше всего объяснить на примере:788789```python790class C(object):791 def __init__(self):792 self._x = None793794 @property795 def x(self):796 """I'm the 'x' property."""797 return self._x798799 @x.setter800 def x(self, value):801 self._x = value802803 @x.deleter804 def x(self):805 del self._x806```807808Этот код полностью эквивалентен первому примеру. Убедитесь, что дополнительные функции имеют то же имя, что и исходное свойство (в данном случае `x`).809810Возвращаемое свойство также имеет атрибуты `fget`, `fset` и `fdel`, соответствующие аргументам конструктора.811812#### `[range]range([start], stop[, step])`813814Это универсальная функция для создания итерируемых объектов, порождающих арифметические прогрессии. Чаще всего она используется в циклах [`for`](https://python-all.ru/3.0/reference/compound_stmts.html#for). Аргументы должны быть целыми числами. Если аргумент *step* опущен, по умолчанию он равен `1`. Если аргумент *start* опущен, по умолчанию он равен `0`. Полная форма возвращает итерируемый объект из целых чисел `[start, start + step, start + 2 * step, ...]`. Если *step* положителен, последний элемент – это наибольшее `start + i * step`, строго меньшее *stop*; если *step* отрицателен, последний элемент – это наименьшее `start + i * step`, строго большее *stop*. *step* не должен быть равен нулю (иначе вызывается [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError)). Пример:815816```python817>>> list(range(10))818[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]819>>> list(range(1, 11))820[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]821>>> list(range(0, 30, 5))822[0, 5, 10, 15, 20, 25]823>>> list(range(0, 10, 3))824[0, 3, 6, 9]825>>> list(range(0, -10, -1))826[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]827>>> list(range(0))828[]829>>> list(range(1, 0))830[]831```832833#### `[repr]repr(object)`834835Возвращает строку, содержащую печатное представление объекта. Для многих типов эта функция пытается вернуть строку, которая при передаче в836837[`eval()`](https://python-all.ru/3.0/library/functions.html#eval)838839дала бы объект с тем же значением; в противном случае представление – это строка в угловых скобках, содержащая имя типа объекта вместе с дополнительной информацией, часто включающей имя и адрес объекта. Класс может управлять тем, что эта функция возвращает для его экземпляров, определив метод840841[`__repr__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__repr__)842843.844845#### `[reversed]reversed(seq)`846847Возвращает обратный848849[*итератор*](https://python-all.ru/3.0/glossary.html#term-iterator)850851.852853*seq*854855должен быть объектом, который имеет метод856857[`__reversed__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__reversed__)858859или поддерживает протокол последовательности (метод860861[`__len__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__len__)862863и метод864865[`__getitem__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getitem__)866867с целочисленными аргументами, начиная с868869`0`870871).872873#### `[round]round(x[, n])`874875Возвращает значение с плавающей точкой *x*, округлённое до *n* знаков после десятичной точки. Если *n* опущено, по умолчанию используется ноль. Делегирует вызов `x.__round__(n)`.876877Для встроенных типов, поддерживающих [`round()`](https://python-all.ru/3.0/library/functions.html#round), значения округляются до ближайшего кратного 10 в степени минус *n*; если два кратных одинаково близки, округление выполняется в сторону чётного выбора (так, например, и `round(0.5)`, и `round(-0.5)` равны `0`, а `round(1.5)` равно `2`). Возвращаемое значение – целое число, если функция вызвана с одним аргументом, в противном случае – того же типа, что и *x*.878879#### `set([iterable])`880881Возвращает новое множество, необязательно с элементами, взятыми из882883*iterable*884885. Тип set описан в разделе886887[*Типы множеств – set, frozenset*](https://python-all.ru/3.0/library/stdtypes.html#types-set)888889.890891#### `[setattr]setattr(object, name, value)`892893Это аналог894895[`getattr()`](https://python-all.ru/3.0/library/functions.html#getattr)896897. Аргументами являются объект, строка и произвольное значение. Строка может называть существующий атрибут или новый атрибут. Функция присваивает значение атрибуту, если объект это позволяет. Например,898899`setattr(x, 'foobar', 123)`900901эквивалентно902903`x.foobar = 123`904905.906907#### `[slice]slice([start], stop[, step])`908909Возвращает объект [*slice*](https://python-all.ru/3.0/glossary.html#term-slice), представляющий набор индексов, заданный `range(start, stop, step)`. Аргументы *start* и *step* по умолчанию равны `None`. Объекты среза имеют атрибуты данных только для чтения `start`, `stop` и `step`, которые просто возвращают значения аргументов (или их значения по умолчанию). У них нет другой явной функциональности; однако они используются Numerical Python и другими сторонними расширениями. Объекты среза также создаются при использовании расширенного синтаксиса индексации. Например: `a[start:stop:step]` или `a[start:stop, i]`.910911#### `[sorted]sorted(iterable[, key[, reverse]])`912913Возвращает новый отсортированный список из элементов *итерируемого объекта*.914915Имеет два необязательных аргумента, которые должны быть указаны как именованные.916917*key* задаёт функцию одного аргумента, которая используется для извлечения ключа сравнения из каждого элемента списка: `key=str.lower`. Значение по умолчанию – `None`.918919*reverse* – логическое значение. Если установлено в `True`, то элементы списка сортируются так, как если бы каждое сравнение было обратным.920921#### `[staticmethod]staticmethod(function)`922923Возвращает статический метод для *функции*.924925Статический метод не получает неявный первый аргумент. Чтобы объявить статический метод, используйте такую идиому:926927```python928class C:929 @staticmethod930 def f(arg1, arg2, ...): ...931```932933Форма `@staticmethod` является [*декоратором*](https://python-all.ru/3.0/glossary.html#term-decorator) функции – см. описание определений функций в [*Function definitions*](https://python-all.ru/3.0/reference/compound_stmts.html#function) для подробностей.934935Её можно вызывать как на классе (например, `C.f()`), так и на экземпляре (например, `C().f()`). Экземпляр игнорируется, за исключением его класса.936937Статические методы в Python похожи на статические методы в Java или C++. Для более продвинутой концепции см. [`classmethod()`](https://python-all.ru/3.0/library/functions.html#classmethod) в этом разделе.938939Для получения дополнительной информации о статических методах обратитесь к документации по стандартной иерархии типов в [*Стандартная иерархия типов*](https://python-all.ru/3.0/reference/datamodel.html#types).940941#### `[str]str([object[, encoding[, errors]]])`942943Возвращает строковое представление объекта, используя один из следующих режимов:944945Если указаны *encoding* и/или *errors*, [`str()`](https://python-all.ru/3.0/library/functions.html#str) декодирует *object*, который может быть либо байтовой строкой, либо символьным буфером, используя кодек для *encoding*. Параметр *encoding* – это строка, задающая имя кодировки; если кодировка неизвестна, возбуждается [`LookupError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.LookupError). Обработка ошибок выполняется в соответствии с *errors*; этот параметр определяет обращение с символами, недопустимыми во входной кодировке. Если *errors* равно `'strict'` (по умолчанию), при ошибках возбуждается [`ValueError`](https://python-all.ru/3.0/library/exceptions.html#exceptions.ValueError), тогда как значение `'ignore'` приводит к игнорированию ошибок без уведомления, а значение `'replace'` приводит к использованию официального заменяющего символа Unicode U+FFFD для замены входных символов, которые не могут быть декодированы. См. также модуль [`codecs`](https://python-all.ru/3.0/library/codecs.html#module-codecs).946947Если указан только *object*, возвращает его хорошо читаемое строковое представление. Для строк это сама строка. Отличие от `repr(object)` в том, что `str(object)` не всегда пытается вернуть строку, которую можно передать в [`eval()`](https://python-all.ru/3.0/library/functions.html#eval); его цель – вернуть печатаемую строку. Без аргументов возвращает пустую строку.948949Объекты могут определять, что возвращает `str(object)`, путём определения специального метода [`__str__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__str__).950951Дополнительную информацию о строках см. в [*Sequence Types – str, bytes, bytearray, list, tuple, range*](https://python-all.ru/3.0/library/stdtypes.html#typesseq), где описывается функциональность последовательностей (строки являются последовательностями), а также строковые методы, описанные в разделе [*Строковые методы*](https://python-all.ru/3.0/library/stdtypes.html#string-methods). Для вывода форматированных строк см. раздел [*Форматирование строк*](https://python-all.ru/3.0/library/string.html#string-formatting). Кроме того, см. раздел [*Строковые сервисы*](https://python-all.ru/3.0/library/strings.html#stringservices).952953#### `[sum]sum(iterable[, start])`954955Суммирует956957*start*958959и элементы960961*iterable*962963слева направо и возвращает сумму.964965*start*966967по умолчанию равен968969`0`970971. Элементы972973*iterable*974975обычно являются числами и не могут быть строками. Быстрый и правильный способ объединения последовательности строк – вызов976977`''.join(sequence)`978979.980981#### `[super]super([type[, object-or-type]])`982983Возвращает объект *super*, который действует как прокси для суперклассов *type*.984985Если второй аргумент опущен, возвращается несвязанный объект super. Если второй аргумент является объектом, `isinstance(obj, type)` должно быть истинно. Если второй аргумент является типом, `issubclass(type2, type)` должно быть истинно. Вызов [`super()`](https://python-all.ru/3.0/library/functions.html#super) без аргументов эквивалентен `super(this_class, first_arg)`.986987Есть два типичных случая использования [`super()`](https://python-all.ru/3.0/library/functions.html#super). В иерархии классов с одиночным наследованием [`super()`](https://python-all.ru/3.0/library/functions.html#super) можно использовать для обращения к родительским классам без явного указания их имени, что делает код более поддерживаемым. Это использование близко к использованию «super» в других языках программирования.988989Второй случай использования – поддержка кооперативного множественного наследования в динамической среде выполнения. Этот случай уникален для Python и не встречается в статически компилируемых языках или языках, поддерживающих только одиночное наследование. Это позволяет реализовать «ромбовидные диаграммы» (diamond diagrams), где несколько базовых классов реализуют один и тот же метод. Хороший дизайн требует, чтобы этот метод имел одинаковую сигнатуру вызова во всех случаях (поскольку порядок вызовов родительских методов определяется во время выполнения и адаптируется к изменениям в иерархии классов).990991Для обоих вариантов использования типичный вызов родительского класса выглядит так:992993```python994class C(B):995 def method(self, arg):996 super().method(arg) # Делает то же самое, что: super(C, self).method(arg)997```998999Обратите внимание, что [`super()`](https://python-all.ru/3.0/library/functions.html#super) реализован как часть процесса связывания для явного поиска атрибутов через точку, например `super().__getitem__(name)`. Это достигается за счёт реализации собственного метода [`__getattribute__()`](https://python-all.ru/3.0/reference/datamodel.html#object.__getattribute__) для поиска родительских классов в предсказуемом порядке, поддерживающем кооперативное множественное наследование. Соответственно, [`super()`](https://python-all.ru/3.0/library/functions.html#super) не определён для неявного поиска с помощью операторов или инструкций, таких как `super()[name]`.10001001Также обратите внимание, что [`super()`](https://python-all.ru/3.0/library/functions.html#super) не ограничен использованием внутри методов. Двухаргументная форма точно задаёт аргументы и создаёт соответствующие ссылки. Форма без аргументов автоматически ищет в стековом фрейме класс (`__class__`) и первый аргумент.10021003#### `[tuple]tuple([iterable])`10041005Возвращает кортеж, элементы которого совпадают с элементами *iterable* и сохраняют их порядок. *iterable* может быть последовательностью, контейнером, поддерживающим итерацию, или объектом-итератором. Если *iterable* уже является кортежем, он возвращается без изменений. Например, `tuple('abc')` возвращает `('a', 'b', 'c')`, а `tuple([1, 2, 3])` возвращает `(1, 2, 3)`. Если аргумент не указан, возвращает новый пустой кортеж, `()`.10061007[`tuple`](https://python-all.ru/3.0/library/functions.html#tuple) – неизменяемый тип последовательности, как описано в разделе [*Типы последовательностей – str, bytes, bytearray, list, tuple, range*](https://python-all.ru/3.0/library/stdtypes.html#typesseq).10081009#### `[type]type(object)`10101011Возвращает тип *object*. Возвращаемое значение – объект типа и обычно тот же объект, который возвращается `object.__class__`.10121013Для проверки типа объекта рекомендуется использовать встроенную функцию [`isinstance()`](https://python-all.ru/3.0/library/functions.html#isinstance), поскольку она учитывает подклассы.10141015С тремя аргументами [`type()`](https://python-all.ru/3.0/library/functions.html#type) работает как конструктор, как описано ниже.10161017#### `type(name, bases, dict)`10181019Возвращает новый объект типа. Это, по сути, динамическая форма инструкции [`class`](https://python-all.ru/3.0/reference/compound_stmts.html#class). Строка *name* – это имя класса, которое становится атрибутом `__name__`; кортеж *bases* перечисляет базовые классы и становится атрибутом `__bases__`; а словарь *dict* – это пространство имён, содержащее определения тела класса, и становится атрибутом `__dict__`. Например, следующие две инструкции создают идентичные объекты [`type`](https://python-all.ru/3.0/library/functions.html#type):10201021```python1022>>> class X(object):1023... a = 11024...1025>>> X = type('X', (object,), dict(a=1))1026```10271028#### `[vars]vars([object])`10291030Без аргументов возвращает словарь, соответствующий текущей таблице локальных символов. С аргументом – модулем, классом или экземпляром класса (или любым другим объектом, имеющим атрибут10311032`__dict__`10331034) – возвращает словарь, соответствующий таблице символов объекта. Возвращаемый словарь не следует изменять: последствия для соответствующей таблицы символов не определены.10351036[\[1\]](https://python-all.ru/3.0/library/functions.html#id2)10371038#### `[zip]zip(*iterables)`10391040Создаёт итератор, который объединяет элементы из каждой из переданных итерируемых последовательностей.10411042Возвращает итератор кортежей, где *i*-й кортеж содержит *i*-й элемент из каждой последовательности аргументов или итерируемого объекта. Итератор останавливается, когда исчерпывается самая короткая входная последовательность. С одним аргументом-итератором возвращает итератор кортежей из одного элемента. Без аргументов возвращает пустой итератор. Эквивалентно:10431044```python1045def zip(*iterables):1046 # zip('ABCD', 'xy') --> Ax By1047 iterables = map(iter, iterables)1048 while iterables:1049 result = [it.next() for it in iterables]1050 yield tuple(result)1051```10521053Гарантируется порядок вычисления итерабельных объектов слева направо. Это делает возможным идиому для группировки ряда данных в группы длины n с использованием `zip(*[iter(s)]*n)`.10541055[`zip()`](https://python-all.ru/3.0/library/functions.html#zip) следует использовать с входами разной длины только в тех случаях, когда не важны лишние, непарные значения из более длинных итерабельных объектов. Если эти значения важны, вместо этого используйте [`itertools.zip_longest()`](https://python-all.ru/3.0/library/itertools.html#itertools.zip_longest).10561057[`zip()`](https://python-all.ru/3.0/library/functions.html#zip) в сочетании с оператором `*` можно использовать для распаковки списка:10581059```python1060>>> x = [1, 2, 3]1061>>> y = [4, 5, 6]1062>>> zipped = zip(x, y)1063>>> list(zipped)1064[(1, 4), (2, 5), (3, 6)]1065>>> x2, y2 = zip(*zip(x, y))1066>>> x == x2, y == y21067True1068```10691070#### `[__import__]__import__(name[, globals[, locals[, fromlist[, level]]]])`10711072> **Примечание**1073>1074> Это продвинутая функция, не требующаяся в повседневном программировании на Python.10751076Эта функция вызывается оператором [`import`](https://python-all.ru/3.0/reference/simple_stmts.html#import). Её можно заменить (импортировав модуль [`builtins`](https://python-all.ru/3.0/library/builtins.html#module-builtins) и присвоив значение `builtins.__import__`), чтобы изменить семантику оператора [`import`](https://python-all.ru/3.0/reference/simple_stmts.html#import), однако в настоящее время обычно проще использовать перехватчики импорта (см. [**PEP 302**](https://python-all.ru/3.0/library/functions.html)). Прямое использование [`__import__()`](https://python-all.ru/3.0/library/functions.html#__import__) – редкость, за исключением случаев, когда требуется импортировать модуль, имя которого известно только во время выполнения.10771078Функция импортирует модуль *name*, возможно, используя заданные *globals* и *locals* для определения того, как интерпретировать имя в контексте пакета. Параметр *fromlist* задает имена объектов или подмодулей, которые должны быть импортированы из модуля, заданного *name*. Стандартная реализация вообще не использует свой аргумент *locals*, а использует *globals* только для определения контекста пакета инструкции [`import`](https://python-all.ru/3.0/reference/simple_stmts.html#import).10791080*level* определяет, использовать ли абсолютные или относительные импорты. Значение по умолчанию – `-1`, что означает, что будут предприняты попытки как абсолютного, так и относительного импорта. `0` означает выполнение только абсолютного импорта. Положительные значения *level* указывают количество родительских каталогов для поиска относительно каталога модуля, вызывающего [`__import__()`](https://python-all.ru/3.0/library/functions.html#__import__).10811082Когда переменная *name* имеет вид `package.module`, в обычном случае возвращается пакет верхнего уровня (имя до первой точки), а *не* модуль, заданный *name*. Однако, если задан непустой аргумент *fromlist*, возвращается модуль, заданный *name*.10831084Например, инструкция `import spam` приводит к байт-коду, напоминающему следующий код:10851086```python1087spam = __import__('spam', globals(), locals(), [], -1)1088```10891090Инструкция `import spam.ham` приводит к следующему вызову:10911092```python1093spam = __import__('spam.ham', globals(), locals(), [], -1)1094```10951096Обратите внимание, как [`__import__()`](https://python-all.ru/3.0/library/functions.html#__import__) здесь возвращает модуль верхнего уровня, потому что это объект, который связывается с именем инструкцией [`import`](https://python-all.ru/3.0/reference/simple_stmts.html#import).10971098С другой стороны, оператор `from spam.ham import eggs, sausage as saus` приводит к10991100```python1101_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], -1)1102eggs = _temp.eggs1103saus = _temp.sausage1104```11051106Здесь модуль `spam.ham` возвращается из [`__import__()`](https://python-all.ru/3.0/library/functions.html#__import__). Из этого объекта извлекаются импортируемые имена и присваиваются соответствующим именам.11071108Если требуется просто импортировать модуль (возможно, внутри пакета) по имени, его можно получить из [`sys.modules`](https://python-all.ru/3.0/library/sys.html#sys.modules):11091110```python1111>>> import sys1112>>> name = 'foo.bar.baz'1113>>> __import__(name)1114<module 'foo' from ...>1115>>> baz = sys.modules[name]1116>>> baz1117<module 'foo.bar.baz' from ...>1118```11191120Сноски11211122| [\[1\]](https://python-all.ru/3.0/library/functions.html#id1) | Указание размера буфера в настоящее время не влияет на системы, не имеющие `setvbuf`. Интерфейс для указания размера буфера не использует метод, вызывающий `setvbuf`, потому что это может привести к дампу ядра при вызове после выполнения любого ввода-вывода, и нет надёжного способа определить, так ли это. |1123| --- | --- |11241125| \[2\] | В текущей реализации локальные привязки переменных обычно нельзя так изменить, но переменные, полученные из других областей видимости (например, из модулей), можно. Это может измениться. |1126| --- | --- |1127