Документация Python неофициальный перевод

functions.md

1084 строк · 104.2 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/library/functions.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 2. Встроенные функции89Интерпретатор Python включает ряд встроенных функций и типов, которые доступны всегда. Они перечислены здесь в алфавитном порядке.1011|  |  | Встроенные функции |  |  |12| --- | --- | --- | --- | --- |13| [`abs()`](https://python-all.ru/3.1/library/functions.html#abs) | [`dir()`](https://python-all.ru/3.1/library/functions.html#dir) | [`hex()`](https://python-all.ru/3.1/library/functions.html#hex) | [`next()`](https://python-all.ru/3.1/library/functions.html#next) | [`slice()`](https://python-all.ru/3.1/library/functions.html#slice) |14| [`all()`](https://python-all.ru/3.1/library/functions.html#all) | [`divmod()`](https://python-all.ru/3.1/library/functions.html#divmod) | [`id()`](https://python-all.ru/3.1/library/functions.html#id) | [`object()`](https://python-all.ru/3.1/library/functions.html#object) | [`sorted()`](https://python-all.ru/3.1/library/functions.html#sorted) |15| [`any()`](https://python-all.ru/3.1/library/functions.html#any) | [`enumerate()`](https://python-all.ru/3.1/library/functions.html#enumerate) | [`input()`](https://python-all.ru/3.1/library/functions.html#input) | [`oct()`](https://python-all.ru/3.1/library/functions.html#oct) | [`staticmethod()`](https://python-all.ru/3.1/library/functions.html#staticmethod) |16| [`ascii()`](https://python-all.ru/3.1/library/functions.html#ascii) | [`eval()`](https://python-all.ru/3.1/library/functions.html#eval) | [`int()`](https://python-all.ru/3.1/library/functions.html#int) | [`open()`](https://python-all.ru/3.1/library/functions.html#open) | [`str()`](https://python-all.ru/3.1/library/functions.html#str) |17| [`bin()`](https://python-all.ru/3.1/library/functions.html#bin) | [`exec()`](https://python-all.ru/3.1/library/functions.html#exec) | [`isinstance()`](https://python-all.ru/3.1/library/functions.html#isinstance) | [`ord()`](https://python-all.ru/3.1/library/functions.html#ord) | [`sum()`](https://python-all.ru/3.1/library/functions.html#sum) |18| [`bool()`](https://python-all.ru/3.1/library/functions.html#bool) | [`filter()`](https://python-all.ru/3.1/library/functions.html#filter) | [`issubclass()`](https://python-all.ru/3.1/library/functions.html#issubclass) | [`pow()`](https://python-all.ru/3.1/library/functions.html#pow) | [`super()`](https://python-all.ru/3.1/library/functions.html#super) |19| [`bytearray()`](https://python-all.ru/3.1/library/functions.html#bytearray) | [`float()`](https://python-all.ru/3.1/library/functions.html#float) | [`iter()`](https://python-all.ru/3.1/library/functions.html#iter) | [`print()`](https://python-all.ru/3.1/library/functions.html#print) | [`tuple()`](https://python-all.ru/3.1/library/functions.html#tuple) |20| [`bytes()`](https://python-all.ru/3.1/library/functions.html#bytes) | [`format()`](https://python-all.ru/3.1/library/functions.html#format) | [`len()`](https://python-all.ru/3.1/library/functions.html#len) | [`property()`](https://python-all.ru/3.1/library/functions.html#property) | [`type()`](https://python-all.ru/3.1/library/functions.html#type) |21| [`chr()`](https://python-all.ru/3.1/library/functions.html#chr) | [`frozenset()`](https://python-all.ru/3.1/library/stdtypes.html#frozenset) | [`list()`](https://python-all.ru/3.1/library/functions.html#list) | [`range()`](https://python-all.ru/3.1/library/functions.html#range) | [`vars()`](https://python-all.ru/3.1/library/functions.html#vars) |22| [`classmethod()`](https://python-all.ru/3.1/library/functions.html#classmethod) | [`getattr()`](https://python-all.ru/3.1/library/functions.html#getattr) | [`locals()`](https://python-all.ru/3.1/library/functions.html#locals) | [`repr()`](https://python-all.ru/3.1/library/functions.html#repr) | [`zip()`](https://python-all.ru/3.1/library/functions.html#zip) |23| [`compile()`](https://python-all.ru/3.1/library/functions.html#compile) | [`globals()`](https://python-all.ru/3.1/library/functions.html#globals) | [`map()`](https://python-all.ru/3.1/library/functions.html#map) | [`reversed()`](https://python-all.ru/3.1/library/functions.html#reversed) | [`__import__()`](https://python-all.ru/3.1/library/functions.html#__import__) |24| [`complex()`](https://python-all.ru/3.1/library/functions.html#complex) | [`hasattr()`](https://python-all.ru/3.1/library/functions.html#hasattr) | [`max()`](https://python-all.ru/3.1/library/functions.html#max) | [`round()`](https://python-all.ru/3.1/library/functions.html#round) |  |25| [`delattr()`](https://python-all.ru/3.1/library/functions.html#delattr) | [`hash()`](https://python-all.ru/3.1/library/functions.html#hash) | [`memoryview()`](https://python-all.ru/3.1/library/stdtypes.html#memoryview) | [`set()`](https://python-all.ru/3.1/library/stdtypes.html#set) |  |26| [`dict()`](https://python-all.ru/3.1/library/stdtypes.html#dict) | [`help()`](https://python-all.ru/3.1/library/functions.html#help) | [`min()`](https://python-all.ru/3.1/library/functions.html#min) | [`setattr()`](https://python-all.ru/3.1/library/functions.html#setattr) |  |2728#### `abs(x)`2930Возвращает абсолютное значение числа. Аргументом может быть целое число или число с плавающей запятой. Если аргументом является комплексное число, возвращается его модуль.3132#### `all(iterable)`3334Возвращает True, если все элементы *итерируемого объекта* истинны (или если итерируемый объект пуст). Эквивалентно:3536```python37def all(iterable):38    for element in iterable:39        if not element:40            return False41    return True42```4344#### `any(iterable)`4546Возвращает True, если хотя бы один элемент *итерируемого объекта* истинен. Если итерируемый объект пуст, возвращает False. Эквивалентно:4748```python49def any(iterable):50    for element in iterable:51        if element:52            return True53    return False54```5556#### `ascii(object)`5758Как и5960[`repr()`](https://python-all.ru/3.1/library/functions.html#repr)6162, возвращает строку, содержащую печатное представление объекта, но экранирует не-ASCII символы в строке, возвращаемой6364[`repr()`](https://python-all.ru/3.1/library/functions.html#repr)6566, используя escape-последовательности6768`\x`6970,7172`\u`7374или7576`\U`7778. Это создаёт строку, похожую на возвращаемую7980[`repr()`](https://python-all.ru/3.1/library/functions.html#repr)8182в Python 2.8384#### `bin(x)`8586Преобразует целое число в двоичную строку. Результат – корректное выражение Python. Если8788*x*8990не является объектом9192[`int`](https://python-all.ru/3.1/library/functions.html#int)9394, он должен определять метод9596[`__index__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__index__)9798, который возвращает целое число.99100#### `bool([x])`101102Преобразует значение в логический тип, используя стандартную процедуру проверки истинности. Если103104*x*105106равно false или опущено, возвращается107108[`False`](https://python-all.ru/3.1/library/constants.html#False)109110; в противном случае возвращается111112[`True`](https://python-all.ru/3.1/library/constants.html#True)113114.115116[`bool`](https://python-all.ru/3.1/library/functions.html#bool)117118– это также класс, являющийся подклассом119120[`int`](https://python-all.ru/3.1/library/functions.html#int)121122. Класс123124[`bool`](https://python-all.ru/3.1/library/functions.html#bool)125126не может быть далее подклассифицирован. Его единственные экземпляры – это127128[`False`](https://python-all.ru/3.1/library/constants.html#False)129130и131132[`True`](https://python-all.ru/3.1/library/constants.html#True)133134.135136#### `bytearray([source[, encoding[, errors]]])`137138Возвращает новый массив байтов. Тип [`bytearray`](https://python-all.ru/3.1/library/functions.html#bytearray) представляет собой изменяемую последовательность целых чисел в диапазоне 0 \<= x \< 256. Он содержит большинство обычных методов изменяемых последовательностей, описанных в [*Mutable Sequence Types*](https://python-all.ru/3.1/library/stdtypes.html#typesseq-mutable), а также большинство методов, которые есть у типа [`bytes`](https://python-all.ru/3.1/library/functions.html#bytes); см. [*Bytes and Byte Array Methods*](https://python-all.ru/3.1/library/stdtypes.html#bytes-methods).139140Необязательный параметр *source* можно использовать для инициализации массива несколькими разными способами:141142- Если это *строка*, необходимо также указать параметры *encoding* (и, опционально, *errors*); затем [`bytearray()`](https://python-all.ru/3.1/library/functions.html#bytearray) преобразует строку в байты с помощью [`str.encode()`](https://python-all.ru/3.1/library/stdtypes.html#str.encode).143- Если это *целое число*, массив будет иметь указанный размер и будет инициализирован нулевыми байтами.144- Если это объект, соответствующий интерфейсу *buffer*, то для инициализации массива bytes будет использоваться буфер этого объекта только для чтения.145- Если это *iterable* (итерируемый объект), это должен быть итерируемый объект целых чисел в диапазоне `0 <= x < 256`, которые используются как начальное содержимое массива.146147Без аргументов создаётся массив размера 0.148149#### `bytes([source[, encoding[, errors]]])`150151Возвращает новый объект «bytes», который является неизменяемой последовательностью целых чисел в диапазоне `0 <= x < 256`. [`bytes`](https://python-all.ru/3.1/library/functions.html#bytes) – неизменяемая версия [`bytearray`](https://python-all.ru/3.1/library/functions.html#bytearray): у него те же неизменяющие методы и такое же поведение при индексации и срезах.152153Соответственно, аргументы конструктора интерпретируются так же, как для [`bytearray()`](https://python-all.ru/3.1/library/functions.html#bytearray).154155Объекты bytes также можно создавать с помощью литералов, см. [*Литералы строк и bytes*](https://python-all.ru/3.1/reference/lexical_analysis.html#strings).156157#### `chr(i)`158159Возвращает строку, представляющую символ, кодовая точка Unicode которого равна целому числу *i*. Например, `chr(97)` возвращает строку `'a'`. Это обратная операция для [`ord()`](https://python-all.ru/3.1/library/functions.html#ord). Допустимый диапазон аргумента – от 0 до 1 114 111 (0x10FFFF в шестнадцатеричной системе). Если *i* выходит за этот диапазон, возбуждается [`ValueError`](https://python-all.ru/3.1/library/exceptions.html#ValueError).160161Обратите внимание, что в сборках с узким Unicode результат представляет собой строку длиной два для *i* больше 65 535 (0xFFFF в шестнадцатеричном формате).162163#### `classmethod(function)`164165Возвращает метод класса для *функции*.166167Метод класса получает класс в качестве неявного первого аргумента, точно так же, как метод экземпляра получает экземпляр. Чтобы объявить метод класса, используйте эту идиому:168169```python170class C:171    @classmethod172    def f(cls, arg1, arg2, ...): ...173```174175Форма `@classmethod` является [*декоратором*](https://python-all.ru/3.1/glossary.html#term-decorator) функций – подробнее см. описание определений функций в разделе [*Function definitions*](https://python-all.ru/3.1/reference/compound_stmts.html#function).176177Он может быть вызван как на классе (например, `C.f()`), так и на экземпляре (например, `C().f()`). Экземпляр игнорируется, за исключением его класса. Если метод класса вызывается для производного класса, объект производного класса передаётся как неявный первый аргумент.178179Методы класса отличаются от статических методов C++ или Java. Если нужны они, см. [`staticmethod()`](https://python-all.ru/3.1/library/functions.html#staticmethod) в этом же разделе.180181Дополнительную информацию о методах класса см. в документации по стандартной иерархии типов в [*Стандартная иерархия типов*](https://python-all.ru/3.1/reference/datamodel.html#types).182183#### `compile(source, filename, mode, flags=0, dont_inherit=False)`184185Компилирует *source* в объект кода или AST. Объекты кода могут быть выполнены с помощью [`exec()`](https://python-all.ru/3.1/library/functions.html#exec) или [`eval()`](https://python-all.ru/3.1/library/functions.html#eval). *source* может быть строкой или AST-объектом. Обратитесь к документации модуля [`ast`](https://python-all.ru/3.1/library/ast.html#module-ast) за информацией о том, как работать с AST-объектами.186187Аргумент *filename* должен указывать файл, из которого был прочитан код; если код был не из файла, передайте какое-нибудь узнаваемое значение (обычно используется `'<string>'`).188189Аргумент *mode* определяет, какой код нужно компилировать: `'exec'`, если *source* состоит из последовательности инструкций, `'eval'`, если из одного выражения, или `'single'`, если из одной интерактивной инструкции (в последнем случае выражения, результатом которых является не `None`, будут выведены на печать).190191Необязательные аргументы *flags* и *dont\_inherit* управляют тем, какие операторы будущего (см. [**PEP 236**](https://python-all.ru/3.1/library/functions.html)) влияют на компиляцию *source*. Если ни один из них не указан (или оба равны нулю), код компилируется с теми операторами будущего, которые действуют в коде, вызывающем compile. Если указан аргумент *flags*, а *dont\_inherit* не указан (или равен нулю), то операторы будущего, заданные аргументом *flags*, используются в дополнение к тем, которые использовались бы в любом случае. Если *dont\_inherit* – ненулевое целое число, то используется аргумент *flags* – операторы будущего, действующие в месте вызова compile, игнорируются.192193Future-инструкции задаются битами, которые можно объединять с помощью побитового ИЛИ, чтобы указать несколько инструкций. Необходимое битовое поле для указания конкретной возможности можно найти как атрибут `compiler_flag` у экземпляра `_Feature` в модуле [`__future__`](https://python-all.ru/3.1/library/__future__.html#module-__future__).194195Эта функция возбуждает исключение [`SyntaxError`](https://python-all.ru/3.1/library/exceptions.html#SyntaxError), если компилируемый исходный код некорректен, и [`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError), если исходный код содержит нулевые байты.196197> **Примечание**198>199> При компиляции строки с многострочными операторами концы строк должны быть представлены одним символом новой строки (`'\n'`), и входные данные должны завершаться по крайней мере одним символом новой строки. Если концы строк представлены как `'\r\n'`, используйте [`str.replace()`](https://python-all.ru/3.1/library/stdtypes.html#str.replace), чтобы заменить их на `'\n'`.200201#### `complex([real[, imag]])`202203Создаёт комплексное число со значением *real* + *imag*\*j или преобразует строку или число в комплексное число. Если первый параметр – строка, она будет интерпретирована как комплексное число, и функцию необходимо вызывать без второго параметра. Второй параметр никогда не может быть строкой. Каждый аргумент может быть любого числового типа (включая комплексный). Если *imag* опущен, по умолчанию он равен нулю, и функция выступает в роли функции преобразования числовых типов, такой как [`int()`](https://python-all.ru/3.1/library/functions.html#int) и [`float()`](https://python-all.ru/3.1/library/functions.html#float). Если оба аргумента опущены, возвращает `0j`.204205Тип complex описан в разделе [*Числовые типы – int, float, complex*](https://python-all.ru/3.1/library/stdtypes.html#typesnumeric).206207#### `delattr(object, name)`208209Это аналог210211[`setattr()`](https://python-all.ru/3.1/library/functions.html#setattr)212213. Аргументы – объект и строка. Строка должна быть именем одного из атрибутов объекта. Функция удаляет именованный атрибут, если объект это позволяет. Например,214215`delattr(x, 'foobar')`216217эквивалентно218219`del x.foobar`220221.222223#### `dict([arg])`224225Создаёт новый словарь данных, опционально с элементами, взятыми из *arg*. Тип словаря описан в [*Mapping Types – dict*](https://python-all.ru/3.1/library/stdtypes.html#typesmapping).226227Другие контейнеры см. во встроенных классах [`list`](https://python-all.ru/3.1/library/functions.html#list), [`set`](https://python-all.ru/3.1/library/stdtypes.html#set), [`tuple`](https://python-all.ru/3.1/library/functions.html#tuple) и модуле [`collections`](https://python-all.ru/3.1/library/collections.html#module-collections).228229#### `dir([object])`230231Без аргументов возвращает список имён в текущей локальной области видимости. Если передан аргумент, пытается вернуть список допустимых атрибутов этого объекта.232233Если у объекта есть метод с именем [`__dir__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__dir__), этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, реализующим собственную функцию [`__getattr__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getattr__) или [`__getattribute__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getattribute__), настраивать то, как [`dir()`](https://python-all.ru/3.1/library/functions.html#dir) сообщает об их атрибутах.234235Если объект не предоставляет [`__dir__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__dir__), функция старается собрать информацию из атрибута `__dict__` объекта (если он определён) и из его объекта-типа. Полученный список не обязательно полный и может быть неточным, если у объекта есть собственная реализация [`__getattr__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getattr__).236237Механизм [`dir()`](https://python-all.ru/3.1/library/functions.html#dir) по умолчанию работает по-разному для разных типов объектов, поскольку он пытается предоставить наиболее уместную, а не полную, информацию:238239- Если объект является модулем, список содержит имена атрибутов этого модуля.240- Если объект является типом или классом, список содержит имена его атрибутов, а также (рекурсивно) атрибутов его базовых классов.241- В остальных случаях список содержит имена атрибутов объекта, имена атрибутов его класса и (рекурсивно) атрибутов базовых классов его класса.242243Полученный список сортируется по алфавиту. Например:244245```python246>>> import struct247>>> dir()   # doctest: +SKIP248['__builtins__', '__doc__', '__name__', 'struct']249>>> dir(struct)   # doctest: +NORMALIZE_WHITESPACE250['Struct', '__builtins__', '__doc__', '__file__', '__name__',251 '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',252 'unpack', 'unpack_from']253>>> class Foo:254...     def __dir__(self):255...         return ["kan", "ga", "roo"]256...257>>> f = Foo()258>>> dir(f)259['ga', 'kan', 'roo']260```261262> **Примечание**263>264> Поскольку [`dir()`](https://python-all.ru/3.1/library/functions.html#dir) предоставляется в первую очередь для удобства использования в интерактивной подсказке, он скорее старается вернуть интересный набор имён, чем строго или последовательно определённый, и его детальное поведение может меняться между версиями. Например, атрибуты метакласса не включаются в результирующий список, если аргумент – класс.265266#### `divmod(a, b)`267268Принимает два (не комплексных) числа и возвращает пару чисел, состоящую из их частного и остатка при целочисленном делении. Для смешанных типов операндов применяются правила бинарных арифметических операторов. Для целых чисел результат такой же, как269270`(a // b, a % b)`271272. Для чисел с плавающей запятой результат равен273274`(q, a % b)`275276, где277278*q*279280обычно равно281282`math.floor(a / b)`283284, но может быть на 1 меньше. В любом случае285286`q * b + a % b`287288очень близко к289290*a*291292, и если293294`a % b`295296не равно нулю, оно имеет тот же знак, что и297298*b*299300, а301302`0 <= abs(a % b) < abs(b)`303304.305306#### `enumerate(iterable, start=0)`307308Возвращает объект enumerate. *iterable* должен быть последовательностью, [*итератором*](https://python-all.ru/3.1/glossary.html#term-iterator) или другим объектом, поддерживающим итерацию. Метод `__next__()` итератора, возвращаемого [`enumerate()`](https://python-all.ru/3.1/library/functions.html#enumerate), возвращает кортеж, содержащий счётчик (от *start*, по умолчанию равный 0) и соответствующее значение, полученное при итерации по *iterable*. [`enumerate()`](https://python-all.ru/3.1/library/functions.html#enumerate) полезен для получения индексированной серии: `(0, seq[0])`, `(1, seq[1])`, `(2, seq[2])`, .... Например:309310```python311>>> for i, season in enumerate(['Spring', 'Summer', 'Fall', 'Winter']):312...     print(i, season)3130 Spring3141 Summer3152 Fall3163 Winter317```318319#### `eval(expression, globals=None, locals=None)`320321Аргументами являются строка и необязательные globals и locals. Если они указаны, *globals* должен быть словарём. Если указаны, *locals* может быть любым отображением (mapping).322323Аргумент *expression* разбирается и вычисляется как выражение Python (технически – список условий) с использованием словарей *globals* и *locals* в качестве глобального и локального пространств имён. Если словарь *globals* присутствует и в нём нет '\_\_builtins\_\_', текущие глобальные переменные копируются в *globals* перед разбором *expression*. Это означает, что *expression* обычно имеет полный доступ к стандартному модулю [`builtins`](https://python-all.ru/3.1/library/builtins.html#module-builtins), и ограниченные окружения распространяются. Если словарь *locals* опущен, по умолчанию он равен *globals*. Если оба словаря опущены, выражение выполняется в том окружении, где вызвана [`eval()`](https://python-all.ru/3.1/library/functions.html#eval). Возвращаемое значение – результат вычисления выражения. Синтаксические ошибки сообщаются как исключения. Пример:324325```python326>>> x = 1327>>> eval('x+1')3282329```330331Эта функция также может использоваться для выполнения произвольных объектов кода (таких как созданные с помощью [`compile()`](https://python-all.ru/3.1/library/functions.html#compile)). В этом случае передавайте объект кода вместо строки. Если объект кода был скомпилирован с `'exec'` в качестве аргумента *kind*, возвращаемое значение [`eval()`](https://python-all.ru/3.1/library/functions.html#eval) будет `None`.332333Подсказки: динамическое выполнение инструкций поддерживается функцией [`exec()`](https://python-all.ru/3.1/library/functions.html#exec). Функции [`globals()`](https://python-all.ru/3.1/library/functions.html#globals) и [`locals()`](https://python-all.ru/3.1/library/functions.html#locals) возвращают текущий глобальный и локальный словари соответственно, которые могут быть полезны для передачи для использования с [`eval()`](https://python-all.ru/3.1/library/functions.html#eval) или [`exec()`](https://python-all.ru/3.1/library/functions.html#exec).334335См. [`ast.literal_eval()`](https://python-all.ru/3.1/library/ast.html#ast.literal_eval) – функцию, позволяющую безопасно вычислять строки с выражениями, содержащими только литералы.336337#### `exec(object[, globals[, locals]])`338339Эта функция поддерживает динамическое выполнение кода Python. *object* должен быть строкой или объектом кода. Если это строка, она разбирается как набор инструкций Python, который затем выполняется (если не возникнет синтаксическая ошибка). [\[1\]](https://python-all.ru/3.1/library/functions.html#id3) Если это объект кода, он просто выполняется. В любом случае предполагается, что выполняемый код корректен как файловый ввод (см. раздел «Файловый ввод» в справочном руководстве). Обратите внимание, что операторы [`return`](https://python-all.ru/3.1/reference/simple_stmts.html#return) и [`yield`](https://python-all.ru/3.1/reference/simple_stmts.html#yield) не могут использоваться вне определений функций, даже в контексте кода, переданного функции [`exec()`](https://python-all.ru/3.1/library/functions.html#exec). Возвращаемое значение – `None`.340341Во всех случаях, если необязательные части опущены, код выполняется в текущей области видимости. Если указан только *globals*, он должен быть словарём, который будет использоваться как для глобальных, так и для локальных переменных. Если указаны *globals* и *locals*, они используются для глобальных и локальных переменных соответственно. Если указан, *locals* может быть любым объектом отображения.342343Если словарь *globals* не содержит значения для ключа `__builtins__`, под этот ключ вставляется ссылка на словарь встроенного модуля [`builtins`](https://python-all.ru/3.1/library/builtins.html#module-builtins). Таким образом можно контролировать, какие встроенные функции доступны выполняемому коду, вставив собственный словарь `__builtins__` в *globals* перед передачей его в [`exec()`](https://python-all.ru/3.1/library/functions.html#exec).344345> **Примечание**346>347> Встроенные функции [`globals()`](https://python-all.ru/3.1/library/functions.html#globals) и [`locals()`](https://python-all.ru/3.1/library/functions.html#locals) возвращают текущий глобальный и локальный словари соответственно, что может быть полезно для их передачи в качестве второго и третьего аргумента в [`exec()`](https://python-all.ru/3.1/library/functions.html#exec).348349> **Примечание**350>351> Словарь *locals* по умолчанию действует так, как описано ниже для функции [`locals()`](https://python-all.ru/3.1/library/functions.html#locals): не следует пытаться изменять словарь *locals* по умолчанию. Передайте явный словарь *locals*, если нужно увидеть влияние кода на *locals* после возврата из функции [`exec()`](https://python-all.ru/3.1/library/functions.html#exec).352353#### `filter(function, iterable)`354355Создаёт итератор из тех элементов *iterable*, для которых *function* возвращает истину. *iterable* может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если *function* равно `None`, предполагается тождественная функция, то есть удаляются все элементы *iterable*, которые являются ложными.356357Обратите внимание, что `filter(function, iterable)` эквивалентно генераторному выражению `(item for item in iterable if function(item))`, если function не равно `None`, и `(item for item in iterable if item)`, если function равно `None`.358359См. [`itertools.filterfalse()`](https://python-all.ru/3.1/library/itertools.html#itertools.filterfalse) – дополняющую функцию, которая возвращает элементы *iterable*, для которых *function* возвращает ложь.360361#### `float([x])`362363Преобразует строку или число в число с плавающей запятой. Если аргумент – строка, она должна содержать десятичное число или число с плавающей запятой, возможно, со знаком и окружённое пробелами. Аргументом также может быть `'[+|-]nan'` или `'[+|-]inf'`. В противном случае аргумент может быть целым числом или числом с плавающей запятой; возвращается число с плавающей запятой с тем же значением (в пределах точности чисел с плавающей запятой Python). Если аргумент не указан, возвращается `0.0`.364365> **Примечание**366>367> 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`.368369Тип float описан в разделе [*Числовые типы – int, float, complex*](https://python-all.ru/3.1/library/stdtypes.html#typesnumeric).370371#### `format(value[, format_spec])`372373Преобразует *значение* в «форматированное» представление, управляемое *спецификацией формата*. Интерпретация *спецификации формата* зависит от типа аргумента *значение*, однако существует стандартный синтаксис форматирования, используемый большинством встроенных типов: [*Мини-язык спецификации формата*](https://python-all.ru/3.1/library/string.html#formatspec).374375> **Примечание**376>377> `format(value, format_spec)` просто вызывает `value.__format__(format_spec)`.378379#### `frozenset([iterable])`380381Return a frozenset object, optionally with elements taken from *iterable*. The frozenset type is described in [*Set Types – set, frozenset*](https://python-all.ru/3.1/library/stdtypes.html#types-set).382383Для других контейнеров см. встроенные классы [`dict`](https://python-all.ru/3.1/library/stdtypes.html#dict), [`list`](https://python-all.ru/3.1/library/functions.html#list), [`tuple`](https://python-all.ru/3.1/library/functions.html#tuple), а также модуль [`collections`](https://python-all.ru/3.1/library/collections.html#module-collections).384385#### `getattr(object, name[, default])`386387Возвращает значение именованного атрибута объекта388389*object*390391.392393*name*394395должен быть строкой. Если строка является именем одного из атрибутов объекта, результатом будет значение этого атрибута. Например,396397`getattr(x, 'foobar')`398399эквивалентно400401`x.foobar`402403. Если именованный атрибут не существует, возвращается404405*default*406407, если он предоставлен, в противном случае возбуждается408409[`AttributeError`](https://python-all.ru/3.1/library/exceptions.html#AttributeError)410411.412413#### `globals()`414415Возвращает словарь, представляющий текущую таблицу глобальных символов. Это всегда словарь текущего модуля (внутри функции или метода это модуль, где она определена, а не модуль, из которого она вызывается).416417#### `hasattr(object, name)`418419Аргументами являются объект и строка. Результат –420421`True`422423, если строка является именем одного из атрибутов объекта, и424425`False`426427в противном случае. (Реализовано вызовом428429`getattr(object, name)`430431и проверкой, вызывает ли он исключение.)432433#### `hash(object)`434435Возвращает хеш-значение объекта (если оно есть). Хеш-значения являются целыми числами. Они используются для быстрого сравнения ключей словаря при поиске в словаре. Числовые значения, которые сравниваются как равные, имеют одинаковое хеш-значение (даже если они разных типов, как в случае 1 и 1.0).436437#### `help([object])`438439Запускает встроенную справочную систему. (Эта функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная справочная система запускается на консоли интерпретатора. Если аргумент – строка, то она ищется как имя модуля, функции, класса, метода, ключевого слова или темы документации, и на консоль выводится страница справки. Если аргумент – объект любого другого типа, генерируется страница справки по этому объекту.440441Эта функция добавляется во встроенное пространство имён модулем [`site`](https://python-all.ru/3.1/library/site.html#module-site).442443#### `hex(x)`444445Преобразует целое число в шестнадцатеричную строку. Результат является корректным Python выражением. Если *x* не является объектом [`int`](https://python-all.ru/3.1/library/functions.html#int), он должен определять метод [`__index__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__index__), который возвращает целое число.446447> **Примечание**448>449> Чтобы получить шестнадцатеричное строковое представление числа с плавающей запятой, используйте метод [`float.hex()`](https://python-all.ru/3.1/library/stdtypes.html#float.hex).450451#### `id(object)`452453Возвращает «идентификатор» объекта. Это целое число, которое гарантированно уникально и постоянно для данного объекта на протяжении его жизни. Два объекта с непересекающимися временами жизни могут иметь одинаковое значение [`id()`](https://python-all.ru/3.1/library/functions.html#id).454455**Особенность реализации CPython:** Это адрес объекта в памяти.456457#### `input([prompt])`458459Если аргумент *prompt* присутствует, он выводится в стандартный вывод без завершающего перевода строки. Затем функция читает строку из ввода, преобразует её в строку (удаляя завершающий перевод строки) и возвращает её. Когда достигается конец файла (EOF), возбуждается [`EOFError`](https://python-all.ru/3.1/library/exceptions.html#EOFError). Пример:460461```python462>>> s = input('--> ')463--> Monty Python's Flying Circus464>>> s465"Monty Python's Flying Circus"466```467468Если модуль [`readline`](https://python-all.ru/3.1/library/readline.html#module-readline) был загружен, то [`input()`](https://python-all.ru/3.1/library/functions.html#input) будет использовать его для предоставления расширенных возможностей редактирования строк и истории.469470#### `int([number | string[, base]])`471472Преобразует число или строку в целое число. Если аргументы не указаны, возвращается `0`. Если указано число, возвращается `number.__int__()`. Преобразование чисел с плавающей запятой в целые выполняется с усечением в сторону нуля. Строка должна быть целочисленным литералом в указанной системе счисления, опционально с префиксом '+' или '-' (без пробела) и окружённым пробелами. Литерал в системе счисления n состоит из цифр от 0 до n-1, при этом буквы 'a'–'z' (или 'A'–'Z') имеют значения от 10 до 35. По умолчанию *base* равно 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)` – допустимы.473474Целочисленный тип описан в разделе [*Числовые типы – int, float, complex*](https://python-all.ru/3.1/library/stdtypes.html#typesnumeric).475476#### `isinstance(object, classinfo)`477478Return true if the479480*object*481482argument is an instance of the483484*classinfo*485486argument, or of a (direct or indirect) subclass thereof. If487488*object*489490is not an object of the given type, the function always returns false. If491492*classinfo*493494is 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). If495496*classinfo*497498is not a type or tuple of types and such tuples, a499500[`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError)501502exception is raised.503504#### `issubclass(class, classinfo)`505506Return true if507508*class*509510is a subclass (direct or indirect) of511512*classinfo*513514. A class is considered a subclass of itself.515516*classinfo*517518may be a tuple of class objects, in which case every entry in519520*classinfo*521522will be checked. In any other case, a523524[`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError)525526exception is raised.527528#### `iter(object[, sentinel])`529530Возвращает объект [*итератора*](https://python-all.ru/3.1/glossary.html#term-iterator). Первый аргумент интерпретируется по-разному в зависимости от наличия второго аргумента. Без второго аргумента *object* должен быть объектом-коллекцией, поддерживающим протокол итерации (метод [`__iter__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__iter__)), или протокол последовательности (метод [`__getitem__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getitem__) с целочисленными аргументами, начиная с `0`). Если не поддерживается ни один из этих протоколов, возбуждается [`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError). Если указан второй аргумент *sentinel*, то *object* должен быть вызываемым объектом. В этом случае при каждом вызове метода `__next__()` созданный итератор будет вызывать *object* без аргументов; если возвращённое значение равно *sentinel*, возбуждается [`StopIteration`](https://python-all.ru/3.1/library/exceptions.html#StopIteration), в противном случае значение возвращается.531532Одно из полезных применений второй формы [`iter()`](https://python-all.ru/3.1/library/functions.html#iter) – чтение строк файла до определённой строки. В следующем примере файл читается до тех пор, пока не встретится строка `"STOP"`:533534```python535with open("mydata.txt") as fp:536    for line in iter(fp.readline, "STOP"):537        process_line(line)538```539540#### `len(s)`541542Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (строка, кортеж или список) или отображение (словарь).543544#### `list([iterable])`545546Возвращает список, элементы которого совпадают с элементами *iterable* и расположены в том же порядке. *iterable* может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если *iterable* уже является списком, создаётся и возвращается его копия, аналогично `iterable[:]`. Например, `list('abc')` возвращает `['a', 'b', 'c']`, а `list( (1, 2, 3) )` возвращает `[1, 2, 3]`. Если аргумент не передан, возвращается новый пустой список `[]`.547548[`list`](https://python-all.ru/3.1/library/functions.html#list) – изменяемый тип последовательности, как описано в [*Sequence Types – str, bytes, bytearray, list, tuple, range*](https://python-all.ru/3.1/library/stdtypes.html#typesseq).549550#### `locals()`551552Обновляет и возвращает словарь, представляющий текущую таблицу локальных символов. Свободные переменные возвращаются [`locals()`](https://python-all.ru/3.1/library/functions.html#locals) при вызове в блоках функций, но не в блоках классов.553554> **Примечание**555>556> Содержимое этого словаря не следует изменять; изменения могут не повлиять на значения локальных и свободных переменных, используемых интерпретатором.557558#### `map(function, iterable, ...)`559560Возвращает итератор, который применяет561562*function*563564к каждому элементу565566*iterable*567568, возвращая результаты. Если переданы дополнительные аргументы569570*iterable*571572,573574*function*575576должна принимать столько же аргументов и применяется к элементам из всех итерируемых объектов параллельно. При нескольких итерируемых объектах итератор останавливается, когда самый короткий из них исчерпан. Для случаев, когда входные данные функции уже организованы в кортежи аргументов, см.577578[`itertools.starmap()`](https://python-all.ru/3.1/library/itertools.html#itertools.starmap)579580.581582#### `max(iterable[, args...], *[, key])`583584С одним аргументом *iterable* возвращает наибольший элемент непустой итерабельной последовательности (например, строки, кортежа или списка). С несколькими аргументами возвращает наибольший из них.585586Необязательный аргумент *key*, передаваемый только по ключевому слову, задаёт функцию упорядочивания с одним аргументом, подобную используемой в `list.sort()`.587588#### `memoryview(obj)`589590Возвращает объект «memory view», созданный из переданного аргумента. Подробнее см.591592[*Типы memoryview*](https://python-all.ru/3.1/library/stdtypes.html#typememoryview)593594.595596#### `min(iterable[, args...], *[, key])`597598С одним аргументом *iterable* возвращает наименьший элемент непустой итерируемой последовательности (например, строки, кортежа или списка). С несколькими аргументами возвращает наименьший из аргументов.599600Необязательный аргумент *key*, передаваемый только по ключевому слову, задаёт функцию упорядочивания с одним аргументом, подобную используемой в `list.sort()`.601602#### `next(iterator[, default])`603604Извлекает следующий элемент из605606*iterator*607608, вызывая его метод609610`__next__()`611612. Если передан613614*default*615616, он возвращается, когда итератор исчерпан; в противном случае возбуждается исключение617618[`StopIteration`](https://python-all.ru/3.1/library/exceptions.html#StopIteration)619620.621622#### `object()`623624Возвращает новый объект без свойств. [`object`](https://python-all.ru/3.1/library/functions.html#object) – базовый класс для всех классов. Он имеет методы, общие для всех экземпляров классов Python. Эта функция не принимает аргументов.625626> **Примечание**627>628> [`object`](https://python-all.ru/3.1/library/functions.html#object) *не* имеет `__dict__`, поэтому нельзя присваивать произвольные атрибуты экземпляру класса [`object`](https://python-all.ru/3.1/library/functions.html#object).629630#### `oct(x)`631632Преобразует целое число в восьмеричную строку. Результат – допустимое выражение Python. Если633634*x*635636не является объектом637638[`int`](https://python-all.ru/3.1/library/functions.html#int)639640Python, он должен определить метод641642[`__index__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__index__)643644, возвращающий целое число.645646#### `open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True)`647648Открывает *file* и возвращает соответствующий поток данных. Если файл не удаётся открыть, возбуждается исключение [`IOError`](https://python-all.ru/3.1/library/exceptions.html#IOError).649650*file* – это строка или bytes-объект, задающий путь (абсолютный или относительный текущего рабочего каталога) к открываемому файлу, или целочисленный файловый дескриптор оборачиваемого файла. (Если задан файловый дескриптор, он закрывается, когда возвращаемый объект ввода-вывода закрывается, если только *closefd* не установлен в `False`.)651652*mode* – необязательная строка, определяющая режим, в котором открывается файл. По умолчанию используется `'r'`, что означает открытие для чтения в текстовом режиме. Другие распространённые значения: `'w'` для записи (при этом файл усекается, если он уже существует) и `'a'` для добавления (что на *некоторых* системах Unix означает, что *все* операции записи добавляются в конец файла независимо от текущей позиции). В текстовом режиме, если *encoding* не указана, используемая кодировка зависит от платформы. (Для чтения и записи сырых байтов используйте двоичный режим и оставьте *encoding* неуказанным.) Доступные режимы:653654| Символ | Значение |655| --- | --- |656| `'r'` | открытие для чтения (по умолчанию) |657| `'w'` | открытие для записи, с предварительным усечением файла |658| `'a'` | открытие для записи, дозапись в конец файла, если он существует |659| `'b'` | двоичный режим |660| `'t'` | текстовый режим (по умолчанию) |661| `'+'` | открывает дисковый файл для обновления (чтения и записи) |662| `'U'` | Режим универсального перевода строк (для обратной совместимости; не следует использовать в новом коде). |663664Режим по умолчанию – `'r'` (открытие для чтения текста, синоним `'rt'`). Для двоичного чтения-записи режим `'w+b'` открывает и усекает файл до 0 байт. `'r+b'` открывает файл без усечения.665666Как упоминалось в [*Обзоре*](https://python-all.ru/3.1/library/io.html#io-overview), Python различает двоичный и текстовый ввод-вывод. Файлы, открытые в двоичном режиме (включая `'b'` в аргументе *mode*), возвращают содержимое как объекты [`bytes`](https://python-all.ru/3.1/library/functions.html#bytes) без декодирования. В текстовом режиме (по умолчанию или когда `'t'` присутствует в аргументе *mode*) содержимое файла возвращается как [`str`](https://python-all.ru/3.1/library/functions.html#str), при этом байты сначала декодируются с использованием кодировки, зависящей от платформы, или указанной *encoding*, если она задана.667668> **Примечание**669>670> Python не зависит от представления текстовых файлов в базовой операционной системе; вся обработка выполняется самим Python и поэтому является платформонезависимой.671672*buffering* – необязательное целое число, используемое для задания политики буферизации. Передайте 0, чтобы отключить буферизацию (разрешено только в двоичном режиме), 1 – для построчной буферизации (работает только в текстовом режиме) и целое число \> 1 – для указания размера буфера фиксированными блоками. Если аргумент *buffering* не передан, политика буферизации по умолчанию действует следующим образом:673674- Двоичные файлы буферизуются блоками фиксированного размера; размер буфера выбирается эвристически, пытаясь определить «размер блока» нижележащего устройства и прибегая к [`io.DEFAULT_BUFFER_SIZE`](https://python-all.ru/3.1/library/io.html#io.DEFAULT_BUFFER_SIZE). На многих системах буфер обычно имеет размер 4096 или 8192 байта.675- «Интерактивные» текстовые файлы (файлы, для которых `isatty()` возвращает True) используют построчную буферизацию. Остальные текстовые файлы используют политику, описанную выше для двоичных файлов.676677*encoding* – это название кодировки, используемой для декодирования или кодирования файла. Она должна использоваться только в текстовом режиме. Кодировка по умолчанию зависит от платформы (то, что возвращает [`locale.getpreferredencoding()`](https://python-all.ru/3.1/library/locale.html#locale.getpreferredencoding)), но можно использовать любую кодировку, поддерживаемую Python. Список поддерживаемых кодировок см. в модуле [`codecs`](https://python-all.ru/3.1/library/codecs.html#module-codecs).678679*errors* – необязательная строка, задающая способ обработки ошибок кодирования и декодирования. Этот параметр нельзя использовать в двоичном режиме. Передайте `'strict'`, чтобы вызвать исключение [`ValueError`](https://python-all.ru/3.1/library/exceptions.html#ValueError) при ошибке кодирования (значение по умолчанию `None` даёт тот же эффект), или `'ignore'` для игнорирования ошибок. (Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных.) `'replace'` приводит к вставке замещающего маркера (например, `'?'`) там, где находятся некорректные данные. При записи можно использовать `'xmlcharrefreplace'` (замена соответствующей XML-ссылкой на символ) или `'backslashreplace'` (замена escape-последовательностями с обратной косой чертой). Любое другое имя обработчика ошибок, зарегистрированное с помощью [`codecs.register_error()`](https://python-all.ru/3.1/library/codecs.html#codecs.register_error), также допустимо.680681*newline* управляет работой режима универсального перевода строк (применяется только в текстовом режиме). Может принимать значения `None`, `''`, `'\n'`, `'\r'` и `'\r\n'`. Работает следующим образом:682683- При чтении, если *newline* равен `None`, включается режим универсального перевода строк. Строки во входных данных могут заканчиваться на `'\n'`, `'\r'` или `'\r\n'`, и они преобразуются в `'\n'` перед возвратом вызывающему коду. Если он равен `''`, режим универсального перевода строк также включён, но концы строк возвращаются вызывающему коду без преобразования. Если он имеет любое другое допустимое значение, входные строки завершаются только заданной строкой, и конец строки возвращается без преобразования.684- При записи, если *newline* равен `None`, все записанные символы `'\n'` преобразуются в системный разделитель строк по умолчанию [`os.linesep`](https://python-all.ru/3.1/library/os.html#os.linesep). Если *newline* равен `''`, преобразование не выполняется. Если *newline* имеет любое другое допустимое значение, все записанные символы `'\n'` преобразуются в заданную строку.685686Если *closefd* равен `False` и был указан файловый дескриптор, а не имя файла, то базовый файловый дескриптор останется открытым при закрытии файла. Если указано имя файла, *closefd* не влияет и должен быть `True` (значение по умолчанию).687688Тип файлового объекта, возвращаемого функцией [`open()`](https://python-all.ru/3.1/library/functions.html#open), зависит от режима. Когда [`open()`](https://python-all.ru/3.1/library/functions.html#open) используется для открытия файла в текстовом режиме (`'w'`, `'r'`, `'wt'`, `'rt'` и т.д.), она возвращает подкласс [`io.TextIOBase`](https://python-all.ru/3.1/library/io.html#io.TextIOBase) (а именно [`io.TextIOWrapper`](https://python-all.ru/3.1/library/io.html#io.TextIOWrapper)). При открытии файла в двоичном режиме с буферизацией возвращаемый класс является подклассом [`io.BufferedIOBase`](https://python-all.ru/3.1/library/io.html#io.BufferedIOBase). Конкретный класс зависит от режима: в двоичном режиме чтения возвращается [`io.BufferedReader`](https://python-all.ru/3.1/library/io.html#io.BufferedReader); в двоичных режимах записи и добавления – [`io.BufferedWriter`](https://python-all.ru/3.1/library/io.html#io.BufferedWriter), а в режиме чтения/записи – [`io.BufferedRandom`](https://python-all.ru/3.1/library/io.html#io.BufferedRandom). Если буферизация отключена, возвращается небуферизованный поток – подкласс [`io.RawIOBase`](https://python-all.ru/3.1/library/io.html#io.RawIOBase), [`io.FileIO`](https://python-all.ru/3.1/library/io.html#io.FileIO).689690См. также модули для работы с файлами, такие как [`fileinput`](https://python-all.ru/3.1/library/fileinput.html#module-fileinput), [`io`](https://python-all.ru/3.1/library/io.html#module-io) (где объявлена [`open()`](https://python-all.ru/3.1/library/functions.html#open)), [`os`](https://python-all.ru/3.1/library/os.html#module-os), [`os.path`](https://python-all.ru/3.1/library/os.path.html#module-os.path), [`tempfile`](https://python-all.ru/3.1/library/tempfile.html#module-tempfile) и [`shutil`](https://python-all.ru/3.1/library/shutil.html#module-shutil).691692#### `ord(c)`693694Принимает строку, содержащую один символ Unicode, и возвращает целое число – кодовую точку Unicode этого символа. Например, `ord('a')` возвращает целое число `97`, а `ord('\u2020')` возвращает `8224`. Это обратная функция для [`chr()`](https://python-all.ru/3.1/library/functions.html#chr).695696В широких сборках Unicode, если длина аргумента не равна единице, будет возбуждено [`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError). В узких сборках Unicode принимаются строки длиной в два символа, если они образуют суррогатную пару UTF-16.697698#### `pow(x, y[, z])`699700Возвращает *x* в степени *y*; если указан *z*, возвращает *x* в степени *y* по модулю *z* (вычисляется эффективнее, чем `pow(x, y) % z`). Двухаргументная форма `pow(x, y)` эквивалентна использованию оператора возведения в степень: `x**y`.701702Аргументы должны быть числовых типов. При смешанных типах операндов применяются правила приведения для бинарных арифметических операторов. Для операндов типа [`int`](https://python-all.ru/3.1/library/functions.html#int) результат имеет тот же тип, что и операнды (после приведения), если только второй аргумент не отрицателен; в этом случае все аргументы преобразуются в float и возвращается результат типа float. Например, `10**2` возвращает `100`, а `10**-2` возвращает `0.01`. Если второй аргумент отрицателен, третий аргумент должен быть опущен. Если указан *z*, то *x* и *y* должны быть целочисленными, а *y* – неотрицательным.703704#### `print([object, ...], *, sep=' ', end='\n', file=sys.stdout)`705706Выводит *object* в поток *file*, разделяя их через *sep* и завершая *end*. *sep*, *end* и *file*, если они присутствуют, должны передаваться как именованные аргументы.707708Все неименованные аргументы преобразуются в строки, как это делает [`str()`](https://python-all.ru/3.1/library/functions.html#str), и записываются в поток, разделённые *sep* и завершаемые *end*. Оба параметра – *sep* и *end* – должны быть строками; они также могут быть `None`, что означает использование значений по умолчанию. Если *object* не передан, [`print()`](https://python-all.ru/3.1/library/functions.html#print) просто выведет *end*.709710Аргумент *file* должен быть объектом, имеющим метод `write(string)`; если он не указан или равен `None`, будет использоваться [`sys.stdout`](https://python-all.ru/3.1/library/sys.html#sys.stdout).711712#### `property(fget=None, fset=None, fdel=None, doc=None)`713714Возвращает атрибут property.715716*fget* – функция для получения значения атрибута, *fset* – функция для установки, а *fdel* – функция для удаления атрибута. Типичное применение – определение управляемого атрибута `x`:717718```python719class C:720    def __init__(self):721        self._x = None722723    def getx(self):724        return self._x725    def setx(self, value):726        self._x = value727    def delx(self):728        del self._x729    x = property(getx, setx, delx, "I'm the 'x' property.")730```731732Если *c* – экземпляр класса *C*, то `c.x` вызовет геттер, `c.x = value` вызовет сеттер, а `del c.x` – делитер.733734Если указан, *doc* будет строкой документации свойства. В противном случае свойство копирует строку документации *fget* (если она существует). Это позволяет легко создавать свойства только для чтения, используя [`property()`](https://python-all.ru/3.1/library/functions.html#property) в качестве [*декоратора*](https://python-all.ru/3.1/glossary.html#term-decorator):735736```python737class Parrot:738    def __init__(self):739        self._voltage = 100000740741    @property742    def voltage(self):743        """Получить текущее напряжение."""744        return self._voltage745```746747превращает метод `voltage()` в «геттер» для атрибута только для чтения с тем же именем.748749Объект property имеет методы `getter`, `setter` и `deleter`, которые можно использовать как декораторы: они создают копию свойства с соответствующей функцией доступа, установленной на декорированную функцию. Это лучше всего объяснить на примере:750751```python752class C:753    def __init__(self):754        self._x = None755756    @property757    def x(self):758        """Я – свойство 'x'."""759        return self._x760761    @x.setter762    def x(self, value):763        self._x = value764765    @x.deleter766    def x(self):767        del self._x768```769770Этот код полностью эквивалентен первому примеру. Убедитесь, что дополнительные функции имеют то же имя, что и исходное свойство (в данном случае `x`).771772Возвращаемое свойство также имеет атрибуты `fget`, `fset` и `fdel`, соответствующие аргументам конструктора.773774#### `range([start], stop[, step])`775776Это универсальная функция для создания итерируемых объектов, порождающих арифметические прогрессии. Чаще всего она используется в циклах [`for`](https://python-all.ru/3.1/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.1/library/exceptions.html#ValueError)). Пример:777778```python779>>> list(range(10))780[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]781>>> list(range(1, 11))782[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]783>>> list(range(0, 30, 5))784[0, 5, 10, 15, 20, 25]785>>> list(range(0, 10, 3))786[0, 3, 6, 9]787>>> list(range(0, -10, -1))788[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]789>>> list(range(0))790[]791>>> list(range(1, 0))792[]793```794795#### `repr(object)`796797Возвращает строку, содержащую печатное представление объекта. Для многих типов эта функция пытается вернуть строку, которая при передаче в798799[`eval()`](https://python-all.ru/3.1/library/functions.html#eval)800801дала бы объект с тем же значением; в противном случае представление – это строка в угловых скобках, содержащая имя типа объекта вместе с дополнительной информацией, часто включающей имя и адрес объекта. Класс может управлять тем, что эта функция возвращает для его экземпляров, определив метод802803[`__repr__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__repr__)804805.806807#### `reversed(seq)`808809Возвращает обратный810811[*итератор*](https://python-all.ru/3.1/glossary.html#term-iterator)812813.814815*seq*816817должен быть объектом, который имеет метод818819[`__reversed__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__reversed__)820821или поддерживает протокол последовательности (метод822823[`__len__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__len__)824825и метод826827[`__getitem__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getitem__)828829с целочисленными аргументами, начиная с830831`0`832833).834835#### `round(x[, n])`836837Возвращает значение с плавающей точкой *x*, округлённое до *n* знаков после десятичной точки. Если *n* опущено, по умолчанию используется ноль. Делегирует вызов `x.__round__(n)`.838839Для встроенных типов, поддерживающих [`round()`](https://python-all.ru/3.1/library/functions.html#round), значения округляются до ближайшего кратного 10 в степени минус *n*; если два кратных одинаково близки, округление выполняется в сторону чётного выбора (так, например, и `round(0.5)`, и `round(-0.5)` равны `0`, а `round(1.5)` равно `2`). Возвращаемое значение – целое число, если функция вызвана с одним аргументом, в противном случае – того же типа, что и *x*.840841> **Примечание**842>843> Поведение [`round()`](https://python-all.ru/3.1/library/functions.html#round) для чисел с плавающей запятой может быть неожиданным: например, `round(2.675, 2)` даёт `2.67` вместо ожидаемого `2.68`. Это не ошибка: это результат того, что большинство десятичных дробей не могут быть представлены точно как float. См. [*Floating Point Arithmetic: Issues and Limitations*](https://python-all.ru/3.1/tutorial/floatingpoint.html#tut-fp-issues) для дополнительной информации.844845#### `set([iterable])`846847Возвращает новое множество, опционально с элементами, взятыми из848849*iterable*850851. Тип множество описан в852853[*Set Types – set, frozenset*](https://python-all.ru/3.1/library/stdtypes.html#types-set)854855.856857#### `setattr(object, name, value)`858859Это аналог860861[`getattr()`](https://python-all.ru/3.1/library/functions.html#getattr)862863. Аргументами являются объект, строка и произвольное значение. Строка может называть существующий атрибут или новый атрибут. Функция присваивает значение атрибуту, если объект это позволяет. Например,864865`setattr(x, 'foobar', 123)`866867эквивалентно868869`x.foobar = 123`870871.872873#### `slice([start], stop[, step])`874875Возвращает объект [*slice*](https://python-all.ru/3.1/glossary.html#term-slice), представляющий множество индексов, заданных `range(start, stop, step)`. Аргументы *start* и *step* по умолчанию `None`. Объекты среза имеют атрибуты только для чтения `start`, `stop` и `step`, которые просто возвращают значения аргументов (или значения по умолчанию). Никакой другой явной функциональности у них нет; однако они используются NumPy и другими сторонними расширениями. Объекты среза также создаются при использовании расширенного синтаксиса индексации. Например: `a[start:stop:step]` или `a[start:stop, i]`. Смотрите также [`itertools.islice()`](https://python-all.ru/3.1/library/itertools.html#itertools.islice) для альтернативной версии, возвращающей итератор.876877#### `sorted(iterable[, key][, reverse])`878879Возвращает новый отсортированный список из элементов *итерируемого объекта*.880881Имеет два необязательных аргумента, которые должны быть указаны как именованные.882883*key* задаёт функцию одного аргумента, которая используется для извлечения ключа сравнения из каждого элемента списка: `key=str.lower`. Значение по умолчанию – `None`.884885*reverse* – логическое значение. Если установлено в `True`, то элементы списка сортируются так, как если бы каждое сравнение было обратным.886887Чтобы преобразовать функцию *cmp* старого образца в функцию *key*, см. [рецепт CmpToKey в поваренной книге ASPN](https://python-all.ru/3.1/library/functions.html).888889Примеры сортировки и краткое руководство по сортировке см. в [Sorting HowTo](https://python-all.ru/3.1/library/functions.html).890891#### `staticmethod(function)`892893Возвращает статический метод для *функции*.894895Статический метод не получает неявный первый аргумент. Чтобы объявить статический метод, используйте такую идиому:896897```python898class C:899    @staticmethod900    def f(arg1, arg2, ...): ...901```902903Форма `@staticmethod` является [*декоратором*](https://python-all.ru/3.1/glossary.html#term-decorator) функции – см. описание определений функций в [*Function definitions*](https://python-all.ru/3.1/reference/compound_stmts.html#function) для подробностей.904905Её можно вызывать как на классе (например, `C.f()`), так и на экземпляре (например, `C().f()`). Экземпляр игнорируется, за исключением его класса.906907Статические методы в Python похожи на статические методы в Java или C++. Для более продвинутой концепции см. [`classmethod()`](https://python-all.ru/3.1/library/functions.html#classmethod) в этом разделе.908909Для получения дополнительной информации о статических методах обратитесь к документации по стандартной иерархии типов в [*Стандартная иерархия типов*](https://python-all.ru/3.1/reference/datamodel.html#types).910911#### `str([object[, encoding[, errors]]])`912913Возвращает строковое представление объекта, используя один из следующих режимов:914915Если указаны *encoding* и/или *errors*, [`str()`](https://python-all.ru/3.1/library/functions.html#str) декодирует *object*, который может быть либо байтовой строкой, либо символьным буфером, используя кодек для *encoding*. Параметр *encoding* – это строка, задающая имя кодировки; если кодировка неизвестна, возбуждается [`LookupError`](https://python-all.ru/3.1/library/exceptions.html#LookupError). Обработка ошибок выполняется в соответствии с *errors*; этот параметр определяет обращение с символами, недопустимыми во входной кодировке. Если *errors* равно `'strict'` (по умолчанию), при ошибках возбуждается [`ValueError`](https://python-all.ru/3.1/library/exceptions.html#ValueError), тогда как значение `'ignore'` приводит к игнорированию ошибок без уведомления, а значение `'replace'` приводит к использованию официального заменяющего символа Unicode U+FFFD для замены входных символов, которые не могут быть декодированы. См. также модуль [`codecs`](https://python-all.ru/3.1/library/codecs.html#module-codecs).916917Если указан только *object*, возвращает его хорошо читаемое строковое представление. Для строк это сама строка. Отличие от `repr(object)` в том, что `str(object)` не всегда пытается вернуть строку, которую можно передать в [`eval()`](https://python-all.ru/3.1/library/functions.html#eval); его цель – вернуть печатаемую строку. Без аргументов возвращает пустую строку.918919Объекты могут определять, что возвращает `str(object)`, путём определения специального метода [`__str__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__str__).920921Дополнительную информацию о строках см. в [*Sequence Types – str, bytes, bytearray, list, tuple, range*](https://python-all.ru/3.1/library/stdtypes.html#typesseq), где описывается функциональность последовательностей (строки являются последовательностями), а также строковые методы, описанные в разделе [*Строковые методы*](https://python-all.ru/3.1/library/stdtypes.html#string-methods). Для вывода форматированных строк см. раздел [*Форматирование строк*](https://python-all.ru/3.1/library/string.html#string-formatting). Кроме того, см. раздел [*Строковые сервисы*](https://python-all.ru/3.1/library/strings.html#stringservices).922923#### `sum(iterable[, start])`924925Суммирует *start* и элементы *iterable* слева направо и возвращает сумму. *start* по умолчанию равен `0`. Элементами *iterable* обычно являются числа, а начальное значение не может быть строкой.926927Для некоторых случаев использования есть хорошие альтернативы [`sum()`](https://python-all.ru/3.1/library/functions.html#sum). Предпочтительный и быстрый способ объединения последовательности строк – вызов `''.join(sequence)`. Для сложения чисел с плавающей запятой с расширенной точностью см. [`math.fsum()`](https://python-all.ru/3.1/library/math.html#math.fsum). Чтобы объединить несколько итерабельных объектов, рассмотрите использование [`itertools.chain()`](https://python-all.ru/3.1/library/itertools.html#itertools.chain).928929#### `super([type[, object-or-type]])`930931Возвращает прокси-объект, который делегирует вызовы методов родительскому или родственному классу относительно *type*. Это полезно для доступа к унаследованным методам, которые были переопределены в классе. Порядок поиска такой же, как используется в [`getattr()`](https://python-all.ru/3.1/library/functions.html#getattr), за исключением того, что сам *type* пропускается.932933Атрибут `__mro__` объекта *type* содержит порядок поиска метода при разрешении, используемый как [`getattr()`](https://python-all.ru/3.1/library/functions.html#getattr), так и [`super()`](https://python-all.ru/3.1/library/functions.html#super). Этот атрибут является динамическим и может изменяться при каждом обновлении иерархии наследования.934935Если второй аргумент опущен, возвращаемый объект super является несвязанным. Если второй аргумент – объект, `isinstance(obj, type)` должно быть истинно. Если второй аргумент – тип, `issubclass(type2, type)` должно быть истинно (это полезно для методов класса).936937Существует два типичных варианта использования *super*. В иерархии классов с одиночным наследованием *super* можно использовать для ссылки на родительские классы без явного указания их имен, что делает код более поддерживаемым. Это использование тесно параллельно использованию *super* в других языках программирования.938939Второй вариант использования – поддержка кооперативного множественного наследования в динамической среде выполнения. Этот вариант уникален для Python и не встречается в статически компилируемых языках или языках, поддерживающих только одиночное наследование. Это позволяет реализовать «ромбовидные диаграммы», в которых несколько базовых классов реализуют один и тот же метод. Хороший дизайн требует, чтобы этот метод имел одинаковую сигнатуру вызова во всех случаях (поскольку порядок вызовов определяется во время выполнения, поскольку этот порядок адаптируется к изменениям в иерархии классов и поскольку этот порядок может включать родственные классы, неизвестные до выполнения).940941Для обоих вариантов использования типичный вызов родительского класса выглядит так:942943```python944class C(B):945    def method(self, arg):946        super().method(arg)    # Делает то же самое, что и:947                               # super(C, self).method(arg)948```949950Обратите внимание, что [`super()`](https://python-all.ru/3.1/library/functions.html#super) реализован как часть процесса связывания для явного поиска атрибутов через точки, например `super().__getitem__(name)`. Это достигается за счет реализации собственного метода [`__getattribute__()`](https://python-all.ru/3.1/reference/datamodel.html#object.__getattribute__) для поиска классов в предсказуемом порядке, поддерживающем кооперативное множественное наследование. Соответственно, [`super()`](https://python-all.ru/3.1/library/functions.html#super) не определен для неявного поиска с помощью операторов или инструкций, таких как `super()[name]`.951952Также обратите внимание, что [`super()`](https://python-all.ru/3.1/library/functions.html#super) не ограничивается использованием внутри методов. Двухаргументная форма задаёт аргументы явно и создаёт соответствующие ссылки. Безаргументная форма автоматически ищет в стеке вызовов класс (`__class__`) и первый аргумент.953954#### `tuple([iterable])`955956Возвращает кортеж, элементы которого совпадают с элементами *iterable* и сохраняют их порядок. *iterable* может быть последовательностью, контейнером, поддерживающим итерацию, или объектом-итератором. Если *iterable* уже является кортежем, он возвращается без изменений. Например, `tuple('abc')` возвращает `('a', 'b', 'c')`, а `tuple([1, 2, 3])` возвращает `(1, 2, 3)`. Если аргумент не указан, возвращает новый пустой кортеж, `()`.957958[`tuple`](https://python-all.ru/3.1/library/functions.html#tuple) – неизменяемый тип последовательности, как описано в разделе [*Типы последовательностей – str, bytes, bytearray, list, tuple, range*](https://python-all.ru/3.1/library/stdtypes.html#typesseq).959960#### `type(object)`961962Возвращает тип *object*. Возвращаемое значение – объект типа и обычно тот же объект, который возвращается `object.__class__`.963964Для проверки типа объекта рекомендуется использовать встроенную функцию [`isinstance()`](https://python-all.ru/3.1/library/functions.html#isinstance), поскольку она учитывает подклассы.965966С тремя аргументами [`type()`](https://python-all.ru/3.1/library/functions.html#type) работает как конструктор, как описано ниже.967968#### `type(name, bases, dict)`969970Возвращает новый объект типа. Это, по сути, динамическая форма инструкции [`class`](https://python-all.ru/3.1/reference/compound_stmts.html#class). Строка *name* – это имя класса, которое становится атрибутом `__name__`; кортеж *bases* перечисляет базовые классы и становится атрибутом `__bases__`; а словарь *dict* – это пространство имён, содержащее определения тела класса, и становится атрибутом `__dict__`. Например, следующие две инструкции создают идентичные объекты [`type`](https://python-all.ru/3.1/library/functions.html#type):971972```python973>>> class X:974...     a = 1975...976>>> X = type('X', (object,), dict(a=1))977```978979#### `vars([object])`980981Без аргумента работает как [`locals()`](https://python-all.ru/3.1/library/functions.html#locals).982983С аргументом – модулем, классом или экземпляром класса (или любым другим объектом, имеющим атрибут `__dict__`) – возвращает этот атрибут.984985> **Примечание**986>987> Возвращаемый словарь не следует изменять: последствия для соответствующей таблицы символов не определены. [\[2\]](https://python-all.ru/3.1/library/functions.html#id4)988989#### `zip(*iterables)`990991Создаёт итератор, который объединяет элементы из каждой из переданных итерируемых последовательностей.992993Возвращает итератор кортежей, где *i*-й кортеж содержит *i*-й элемент из каждой последовательности аргументов или итерируемого объекта. Итератор останавливается, когда исчерпывается самая короткая входная последовательность. С одним аргументом-итератором возвращает итератор кортежей из одного элемента. Без аргументов возвращает пустой итератор. Эквивалентно:994995```python996def zip(*iterables):997    # zip('ABCD', 'xy') --> Ax By998    sentinel = object()999    iterables = [iter(it) for it in iterables]1000    while iterables:1001        result = []1002        for it in iterables:1003            elem = next(it, sentinel)1004            if elem is sentinel:1005                return1006            result.append(elem)1007        yield tuple(result)1008```10091010Гарантируется порядок вычисления итерабельных объектов слева направо. Это делает возможным идиому для группировки ряда данных в группы длины n с использованием `zip(*[iter(s)]*n)`.10111012[`zip()`](https://python-all.ru/3.1/library/functions.html#zip) следует использовать с входами разной длины только в тех случаях, когда не важны лишние, непарные значения из более длинных итерабельных объектов. Если эти значения важны, вместо этого используйте [`itertools.zip_longest()`](https://python-all.ru/3.1/library/itertools.html#itertools.zip_longest).10131014[`zip()`](https://python-all.ru/3.1/library/functions.html#zip) в сочетании с оператором `*` можно использовать для распаковки списка:10151016```python1017>>> x = [1, 2, 3]1018>>> y = [4, 5, 6]1019>>> zipped = zip(x, y)1020>>> list(zipped)1021[(1, 4), (2, 5), (3, 6)]1022>>> x2, y2 = zip(*zip(x, y))1023>>> x == list(x2) and y == list(y2)1024True1025```10261027#### `__import__(name, globals={}, locals={}, fromlist=[], level=0)`10281029> **Примечание**1030>1031> Это продвинутая функция, не требующаяся в повседневном программировании на Python.10321033Эта функция вызывается оператором [`import`](https://python-all.ru/3.1/reference/simple_stmts.html#import). Её можно заменить (импортировав модуль [`builtins`](https://python-all.ru/3.1/library/builtins.html#module-builtins) и присвоив значение `builtins.__import__`), чтобы изменить семантику оператора [`import`](https://python-all.ru/3.1/reference/simple_stmts.html#import), однако в настоящее время обычно проще использовать перехватчики импорта (см. [**PEP 302**](https://python-all.ru/3.1/library/functions.html)). Прямое использование [`__import__()`](https://python-all.ru/3.1/library/functions.html#__import__) – редкость, за исключением случаев, когда требуется импортировать модуль, имя которого известно только во время выполнения.10341035Функция импортирует модуль *name*, возможно, используя заданные *globals* и *locals* для определения того, как интерпретировать имя в контексте пакета. Параметр *fromlist* задает имена объектов или подмодулей, которые должны быть импортированы из модуля, заданного *name*. Стандартная реализация вообще не использует свой аргумент *locals*, а использует *globals* только для определения контекста пакета инструкции [`import`](https://python-all.ru/3.1/reference/simple_stmts.html#import).10361037*level* указывает, использовать ли абсолютный или относительный импорт. `0` (по умолчанию) означает выполнять только абсолютный импорт. Положительные значения *level* указывают количество родительских каталогов для поиска относительно каталога модуля, вызывающего [`__import__()`](https://python-all.ru/3.1/library/functions.html#__import__).10381039Когда переменная *name* имеет вид `package.module`, в обычном случае возвращается пакет верхнего уровня (имя до первой точки), а *не* модуль, заданный *name*. Однако, если задан непустой аргумент *fromlist*, возвращается модуль, заданный *name*.10401041Например, инструкция `import spam` приводит к байт-коду, напоминающему следующий код:10421043```python1044spam = __import__('spam', globals(), locals(), [], 0)1045```10461047Инструкция `import spam.ham` приводит к следующему вызову:10481049```python1050spam = __import__('spam.ham', globals(), locals(), [], 0)1051```10521053Обратите внимание, как [`__import__()`](https://python-all.ru/3.1/library/functions.html#__import__) здесь возвращает модуль верхнего уровня, потому что это объект, который связывается с именем инструкцией [`import`](https://python-all.ru/3.1/reference/simple_stmts.html#import).10541055С другой стороны, оператор `from spam.ham import eggs, sausage as saus` приводит к10561057```python1058_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)1059eggs = _temp.eggs1060saus = _temp.sausage1061```10621063Здесь модуль `spam.ham` возвращается из [`__import__()`](https://python-all.ru/3.1/library/functions.html#__import__). Из этого объекта извлекаются импортируемые имена и присваиваются соответствующим именам.10641065Если вы просто хотите импортировать модуль (возможно, в составе пакета) по имени, вы можете вызвать [`__import__()`](https://python-all.ru/3.1/library/functions.html#__import__), а затем найти его в [`sys.modules`](https://python-all.ru/3.1/library/sys.html#sys.modules):10661067```python1068>>> import sys1069>>> name = 'foo.bar.baz'1070>>> __import__(name)1071<module 'foo' from ...>1072>>> baz = sys.modules[name]1073>>> baz1074<module 'foo.bar.baz' from ...>1075```10761077Сноски10781079| [\[1\]](https://python-all.ru/3.1/library/functions.html#id1) | Обратите внимание, что анализатор принимает только соглашение о концах строк в стиле Unix. Если вы читаете код из файла, убедитесь, что используете режим преобразования символов новой строки для преобразования концов строк в стиле Windows или Mac. |1080| --- | --- |10811082| [\[2\]](https://python-all.ru/3.1/library/functions.html#id2) | В текущей реализации локальные привязки переменных обычно нельзя так изменить, но переменные, полученные из других областей видимости (например, из модулей), можно. Это может измениться. |1083| --- | --- |1084