functions.md
1> **Источник:** https://python-all.ru/3.3/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.3/library/functions.html#abs) | [`dict()`](https://python-all.ru/3.3/library/functions.html#func-dict) | [`help()`](https://python-all.ru/3.3/library/functions.html#help) | [`min()`](https://python-all.ru/3.3/library/functions.html#min) | [`setattr()`](https://python-all.ru/3.3/library/functions.html#setattr) |14| [`all()`](https://python-all.ru/3.3/library/functions.html#all) | [`dir()`](https://python-all.ru/3.3/library/functions.html#dir) | [`hex()`](https://python-all.ru/3.3/library/functions.html#hex) | [`next()`](https://python-all.ru/3.3/library/functions.html#next) | [`slice()`](https://python-all.ru/3.3/library/functions.html#slice) |15| [`any()`](https://python-all.ru/3.3/library/functions.html#any) | [`divmod()`](https://python-all.ru/3.3/library/functions.html#divmod) | [`id()`](https://python-all.ru/3.3/library/functions.html#id) | [`object()`](https://python-all.ru/3.3/library/functions.html#object) | [`sorted()`](https://python-all.ru/3.3/library/functions.html#sorted) |16| [`ascii()`](https://python-all.ru/3.3/library/functions.html#ascii) | [`enumerate()`](https://python-all.ru/3.3/library/functions.html#enumerate) | [`input()`](https://python-all.ru/3.3/library/functions.html#input) | [`oct()`](https://python-all.ru/3.3/library/functions.html#oct) | [`staticmethod()`](https://python-all.ru/3.3/library/functions.html#staticmethod) |17| [`bin()`](https://python-all.ru/3.3/library/functions.html#bin) | [`eval()`](https://python-all.ru/3.3/library/functions.html#eval) | [`int()`](https://python-all.ru/3.3/library/functions.html#int) | [`open()`](https://python-all.ru/3.3/library/functions.html#open) | [`str()`](https://python-all.ru/3.3/library/functions.html#func-str) |18| [`bool()`](https://python-all.ru/3.3/library/functions.html#bool) | [`exec()`](https://python-all.ru/3.3/library/functions.html#exec) | [`isinstance()`](https://python-all.ru/3.3/library/functions.html#isinstance) | [`ord()`](https://python-all.ru/3.3/library/functions.html#ord) | [`sum()`](https://python-all.ru/3.3/library/functions.html#sum) |19| [`bytearray()`](https://python-all.ru/3.3/library/functions.html#bytearray) | [`filter()`](https://python-all.ru/3.3/library/functions.html#filter) | [`issubclass()`](https://python-all.ru/3.3/library/functions.html#issubclass) | [`pow()`](https://python-all.ru/3.3/library/functions.html#pow) | [`super()`](https://python-all.ru/3.3/library/functions.html#super) |20| [`bytes()`](https://python-all.ru/3.3/library/functions.html#bytes) | [`float()`](https://python-all.ru/3.3/library/functions.html#float) | [`iter()`](https://python-all.ru/3.3/library/functions.html#iter) | [`print()`](https://python-all.ru/3.3/library/functions.html#print) | [`tuple()`](https://python-all.ru/3.3/library/functions.html#func-tuple) |21| [`callable()`](https://python-all.ru/3.3/library/functions.html#callable) | [`format()`](https://python-all.ru/3.3/library/functions.html#format) | [`len()`](https://python-all.ru/3.3/library/functions.html#len) | [`property()`](https://python-all.ru/3.3/library/functions.html#property) | [`type()`](https://python-all.ru/3.3/library/functions.html#type) |22| [`chr()`](https://python-all.ru/3.3/library/functions.html#chr) | [`frozenset()`](https://python-all.ru/3.3/library/functions.html#func-frozenset) | [`list()`](https://python-all.ru/3.3/library/functions.html#func-list) | [`range()`](https://python-all.ru/3.3/library/functions.html#func-range) | [`vars()`](https://python-all.ru/3.3/library/functions.html#vars) |23| [`classmethod()`](https://python-all.ru/3.3/library/functions.html#classmethod) | [`getattr()`](https://python-all.ru/3.3/library/functions.html#getattr) | [`locals()`](https://python-all.ru/3.3/library/functions.html#locals) | [`repr()`](https://python-all.ru/3.3/library/functions.html#repr) | [`zip()`](https://python-all.ru/3.3/library/functions.html#zip) |24| [`compile()`](https://python-all.ru/3.3/library/functions.html#compile) | [`globals()`](https://python-all.ru/3.3/library/functions.html#globals) | [`map()`](https://python-all.ru/3.3/library/functions.html#map) | [`reversed()`](https://python-all.ru/3.3/library/functions.html#reversed) | [`__import__()`](https://python-all.ru/3.3/library/functions.html#__import__) |25| [`complex()`](https://python-all.ru/3.3/library/functions.html#complex) | [`hasattr()`](https://python-all.ru/3.3/library/functions.html#hasattr) | [`max()`](https://python-all.ru/3.3/library/functions.html#max) | [`round()`](https://python-all.ru/3.3/library/functions.html#round) | |26| [`delattr()`](https://python-all.ru/3.3/library/functions.html#delattr) | [`hash()`](https://python-all.ru/3.3/library/functions.html#hash) | [`memoryview()`](https://python-all.ru/3.3/library/functions.html#func-memoryview) | [`set()`](https://python-all.ru/3.3/library/functions.html#func-set) | |2728#### `abs(x)`2930Возвращает абсолютное значение числа. Аргументом может быть целое число или число с плавающей запятой. Если аргументом является комплексное число, возвращается его модуль.3132#### `all(iterable)`3334Возвращает `True`, если все элементы *iterable* истинны (или если итерируемый объект пуст). Эквивалентно:3536```python37def all(iterable):38 for element in iterable:39 if not element:40 return False41 return True42```4344#### `any(iterable)`4546Возвращает `True`, если хотя бы один элемент *iterable* истинен. Если итерируемый объект пуст, возвращает `False`. Эквивалентно:4748```python49def any(iterable):50 for element in iterable:51 if element:52 return True53 return False54```5556#### `ascii(object)`5758Как и [`repr()`](https://python-all.ru/3.3/library/functions.html#repr), возвращает строку, содержащую печатное представление объекта, но экранирует не-ASCII символы в строке, возвращаемой [`repr()`](https://python-all.ru/3.3/library/functions.html#repr), используя escape-последовательности `\x`, `\u` или `\U`. Это создаёт строку, похожую на возвращаемую [`repr()`](https://python-all.ru/3.3/library/functions.html#repr) в Python 2.5960#### `bin(x)`6162Преобразует целое число в двоичную строку. Результат – корректное выражение Python. Если *x* не является объектом [`int`](https://python-all.ru/3.3/library/functions.html#int), он должен определять метод [`__index__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__index__), который возвращает целое число.6364#### `bool([x])`6566Преобразует значение в булево, используя стандартную [*процедуру проверки на истинность*](https://python-all.ru/3.3/library/stdtypes.html#truth). Если *x* равно false или не указано, возвращает `False`; в противном случае возвращает `True`. [`bool`](https://python-all.ru/3.3/library/functions.html#bool) – это также класс, являющийся подклассом [`int`](https://python-all.ru/3.3/library/functions.html#int) (см. [*Numeric Types – int, float, complex*](https://python-all.ru/3.3/library/stdtypes.html#typesnumeric)). Класс [`bool`](https://python-all.ru/3.3/library/functions.html#bool) нельзя наследовать. Его единственные экземпляры – `False` и `True` (см. [*Boolean Values*](https://python-all.ru/3.3/library/stdtypes.html#bltin-boolean-values)).6768#### `bytearray([source[, encoding[, errors]]])`6970Возвращает новый массив байтов. Тип [`bytearray`](https://python-all.ru/3.3/library/functions.html#bytearray) представляет собой изменяемую последовательность целых чисел в диапазоне 0 \<= x \< 256. Он поддерживает большинство обычных методов изменяемых последовательностей, описанных в [*Mutable Sequence Types*](https://python-all.ru/3.3/library/stdtypes.html#typesseq-mutable), а также большинство методов типа [`bytes`](https://python-all.ru/3.3/library/functions.html#bytes) (см. [*Bytes and Bytearray Operations*](https://python-all.ru/3.3/library/stdtypes.html#bytes-methods)).7172Необязательный параметр *source* можно использовать для инициализации массива несколькими разными способами:7374- Если это *строка*, необходимо также указать параметры *encoding* (и, опционально, *errors*); затем [`bytearray()`](https://python-all.ru/3.3/library/functions.html#bytearray) преобразует строку в байты с помощью [`str.encode()`](https://python-all.ru/3.3/library/stdtypes.html#str.encode).75- Если это *целое число*, массив будет иметь указанный размер и будет инициализирован нулевыми байтами.76- Если это объект, соответствующий интерфейсу *buffer*, то для инициализации массива bytes будет использоваться буфер этого объекта только для чтения.77- Если это *iterable* (итерируемый объект), это должен быть итерируемый объект целых чисел в диапазоне `0 <= x < 256`, которые используются как начальное содержимое массива.7879Без аргументов создаётся массив размера 0.8081См. также [*Типы бинарных последовательностей – bytes, bytearray, memoryview*](https://python-all.ru/3.3/library/stdtypes.html#binaryseq) и [*Объекты bytearray*](https://python-all.ru/3.3/library/stdtypes.html#typebytearray).8283#### `bytes([source[, encoding[, errors]]])`8485Возвращает новый объект «bytes», который является неизменяемой последовательностью целых чисел в диапазоне `0 <= x < 256`. [`bytes`](https://python-all.ru/3.3/library/functions.html#bytes) – неизменяемая версия [`bytearray`](https://python-all.ru/3.3/library/functions.html#bytearray): у него те же неизменяющие методы и такое же поведение при индексации и срезах.8687Соответственно, аргументы конструктора интерпретируются так же, как для [`bytearray()`](https://python-all.ru/3.3/library/functions.html#bytearray).8889Объекты bytes также можно создавать с помощью литералов, см. [*Литералы строк и bytes*](https://python-all.ru/3.3/reference/lexical_analysis.html#strings).9091См. также [*Типы двоичных последовательностей – bytes, bytearray, memoryview*](https://python-all.ru/3.3/library/stdtypes.html#binaryseq), [*Bytes*](https://python-all.ru/3.3/library/stdtypes.html#typebytes) и [*Операции над bytes и bytearray*](https://python-all.ru/3.3/library/stdtypes.html#bytes-methods).9293#### `callable(object)`9495Возвращает [`True`](https://python-all.ru/3.3/library/constants.html#True), если аргумент *object* является вызываемым, и [``False](https://python-all.ru/3.3/library/constants.html#False), если нет. Если эта функция возвращает истину, вызов всё ещё может завершиться ошибкой, но если она возвращает ложь, вызов *object* никогда не удастся. Обратите внимание, что классы вызываемы (вызов класса создаёт новый экземпляр); экземпляры вызываемы, если их класс имеет метод [`__call__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__call__).9697Новое в версии 3.2: Эта функция была сначала удалена в Python 3.0, а затем снова добавлена в Python 3.2.9899#### `chr(i)`100101Возвращает строку, представляющую символ, кодовая точка Unicode которого равна целому числу *i*. Например, `chr(97)` возвращает строку `'a'`. Это обратная операция для [`ord()`](https://python-all.ru/3.3/library/functions.html#ord). Допустимый диапазон аргумента – от 0 до 1 114 111 (0x10FFFF в шестнадцатеричной системе). Если *i* выходит за этот диапазон, возбуждается [`ValueError`](https://python-all.ru/3.3/library/exceptions.html#ValueError).102103#### `classmethod(function)`104105Возвращает метод класса для *функции*.106107Метод класса получает класс в качестве неявного первого аргумента, точно так же, как метод экземпляра получает экземпляр. Чтобы объявить метод класса, используйте эту идиому:108109```python110class C:111 @classmethod112 def f(cls, arg1, arg2, ...): ...113```114115Форма `@classmethod` является [*декоратором*](https://python-all.ru/3.3/glossary.html#term-decorator) функций – подробнее см. описание определений функций в разделе [*Function definitions*](https://python-all.ru/3.3/reference/compound_stmts.html#function).116117Он может быть вызван как на классе (например, `C.f()`), так и на экземпляре (например, `C().f()`). Экземпляр игнорируется, за исключением его класса. Если метод класса вызывается для производного класса, объект производного класса передаётся как неявный первый аргумент.118119Методы класса отличаются от статических методов C++ или Java. Если нужны они, см. [`staticmethod()`](https://python-all.ru/3.3/library/functions.html#staticmethod) в этом же разделе.120121Дополнительную информацию о методах класса см. в документации по стандартной иерархии типов в [*Стандартная иерархия типов*](https://python-all.ru/3.3/reference/datamodel.html#types).122123#### `compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)`124125Компилирует *source* в объект кода или AST. Объекты кода могут выполняться с помощью [`exec()`](https://python-all.ru/3.3/library/functions.html#exec) или [`eval()`](https://python-all.ru/3.3/library/functions.html#eval). *source* может быть обычной строкой, строкой байтов или объектом AST. Обратитесь к документации модуля [`ast`](https://python-all.ru/3.3/library/ast.html#module-ast) за информацией о работе с объектами AST.126127Аргумент *filename* должен указывать файл, из которого был прочитан код; если код был не из файла, передайте какое-нибудь узнаваемое значение (обычно используется `'<string>'`).128129Аргумент *mode* определяет, какой код нужно компилировать: `'exec'`, если *source* состоит из последовательности инструкций, `'eval'`, если из одного выражения, или `'single'`, если из одной интерактивной инструкции (в последнем случае выражения, результатом которых является не `None`, будут выведены на печать).130131Необязательные аргументы *flags* и *dont\_inherit* управляют тем, какие операторы будущего (см. [**PEP 236**](https://python-all.ru/3.3/library/functions.html)) влияют на компиляцию *source*. Если ни один из них не указан (или оба равны нулю), код компилируется с теми операторами будущего, которые действуют в коде, вызывающем compile. Если указан аргумент *flags*, а *dont\_inherit* не указан (или равен нулю), то операторы будущего, заданные аргументом *flags*, используются в дополнение к тем, которые использовались бы в любом случае. Если *dont\_inherit* – ненулевое целое число, то используется аргумент *flags* – операторы будущего, действующие в месте вызова compile, игнорируются.132133Future-инструкции задаются битами, которые можно объединять побитовым ИЛИ для указания нескольких инструкций. Битовое поле, необходимое для задания конкретной возможности, можно найти как атрибут `compiler_flag` экземпляра `_Feature` в модуле [`__future__`](https://python-all.ru/3.3/library/__future__.html#module-__future__).134135Аргумент *optimize* задаёт уровень оптимизации компилятора; значение по умолчанию `-1` выбирает уровень оптимизации интерпретатора, задаваемый опциями [*-O*](https://python-all.ru/3.3/using/cmdline.html#cmdoption-O). Явные уровни: `0` (без оптимизации; `__debug__` истинно), `1` (утверждения удалены, `__debug__` ложно) или `2` (также удалены строки документации).136137Эта функция возбуждает исключение [`SyntaxError`](https://python-all.ru/3.3/library/exceptions.html#SyntaxError), если компилируемый исходный код некорректен, и [`TypeError`](https://python-all.ru/3.3/library/exceptions.html#TypeError), если исходный код содержит нулевые байты.138139> **Примечание**140>141> При компиляции строки с многострочным кодом в режиме `'single'` или `'eval'` входные данные должны заканчиваться хотя бы одним символом новой строки. Это необходимо для упрощения обнаружения незавершённых и завершённых инструкций в модуле [`code`](https://python-all.ru/3.3/library/code.html#module-code).142143Изменено в версии 3.2: Разрешено использование символов новой строки Windows и Mac. Кроме того, входные данные в режиме `'exec'` больше не обязательно должны заканчиваться символом новой строки. Добавлен параметр *optimize*.144145#### `complex([real[, imag]])`146147Создаёт комплексное число со значением *real* + *imag*\*j или преобразует строку или число в комплексное число. Если первый параметр – строка, она будет интерпретирована как комплексное число, и функцию необходимо вызывать без второго параметра. Второй параметр никогда не может быть строкой. Каждый аргумент может быть любого числового типа (включая комплексный). Если *imag* опущен, по умолчанию он равен нулю, и функция выступает в роли функции преобразования числовых типов, такой как [`int()`](https://python-all.ru/3.3/library/functions.html#int) и [`float()`](https://python-all.ru/3.3/library/functions.html#float). Если оба аргумента опущены, возвращает `0j`.148149> **Примечание**150>151> При преобразовании из строки строка не должна содержать пробелов вокруг центрального оператора `+` или `-`. Например, `complex('1+2j')` допустимо, но `complex('1 + 2j')` возбуждает [`ValueError`](https://python-all.ru/3.3/library/exceptions.html#ValueError).152153Тип complex описан в разделе [*Числовые типы – int, float, complex*](https://python-all.ru/3.3/library/stdtypes.html#typesnumeric).154155#### `delattr(object, name)`156157Это аналог [`setattr()`](https://python-all.ru/3.3/library/functions.html#setattr). Аргументы – объект и строка. Строка должна быть именем одного из атрибутов объекта. Функция удаляет именованный атрибут, если объект это позволяет. Например, `delattr(x, 'foobar')` эквивалентно `del x.foobar`.158159#### `dict(**kwarg)`160161#### `dict(mapping, **kwarg)`162163#### `dict(iterable, **kwarg)`164165Создаёт новый словарь. Объект [`dict`](https://python-all.ru/3.3/library/stdtypes.html#dict) – это класс словаря. Документацию об этом классе см. в [`dict`](https://python-all.ru/3.3/library/stdtypes.html#dict) и [*Mapping Types – dict*](https://python-all.ru/3.3/library/stdtypes.html#typesmapping).166167О других контейнерах см. встроенные классы [`list`](https://python-all.ru/3.3/library/stdtypes.html#list), [`set`](https://python-all.ru/3.3/library/stdtypes.html#set) и [`tuple`](https://python-all.ru/3.3/library/stdtypes.html#tuple), а также модуль [`collections`](https://python-all.ru/3.3/library/collections.html#module-collections).168169#### `dir([object])`170171Без аргументов возвращает список имён в текущей локальной области видимости. Если передан аргумент, пытается вернуть список допустимых атрибутов этого объекта.172173Если у объекта есть метод с именем [`__dir__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__dir__), этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, реализующим собственную функцию [`__getattr__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__getattr__) или [`__getattribute__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__getattribute__), настраивать то, как [`dir()`](https://python-all.ru/3.3/library/functions.html#dir) сообщает об их атрибутах.174175Если объект не предоставляет [`__dir__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__dir__), функция старается собрать информацию из атрибута `__dict__` объекта (если он определён) и из его объекта-типа. Полученный список не обязательно полный и может быть неточным, если у объекта есть собственная реализация [`__getattr__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__getattr__).176177Механизм [`dir()`](https://python-all.ru/3.3/library/functions.html#dir) по умолчанию работает по-разному для разных типов объектов, поскольку он пытается предоставить наиболее уместную, а не полную, информацию:178179- Если объект является модулем, список содержит имена атрибутов этого модуля.180- Если объект является типом или классом, список содержит имена его атрибутов, а также (рекурсивно) атрибутов его базовых классов.181- В остальных случаях список содержит имена атрибутов объекта, имена атрибутов его класса и (рекурсивно) атрибутов базовых классов его класса.182183Полученный список сортируется по алфавиту. Например:184185```python186>>> import struct187>>> dir() # показать имена в пространстве имён модуля188['__builtins__', '__name__', 'struct']189>>> dir(struct) # показать имена в модуле struct 190['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__',191 '__initializing__', '__loader__', '__name__', '__package__',192 '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',193 'unpack', 'unpack_from']194>>> class Shape:195... def __dir__(self):196... return ['area', 'perimeter', 'location']197>>> s = Shape()198>>> dir(s)199['area', 'location', 'perimeter']200```201202> **Примечание**203>204> Поскольку [`dir()`](https://python-all.ru/3.3/library/functions.html#dir) предоставляется в первую очередь для удобства использования в интерактивной подсказке, он скорее старается вернуть интересный набор имён, чем строго или последовательно определённый, и его детальное поведение может меняться между версиями. Например, атрибуты метакласса не включаются в результирующий список, если аргумент – класс.205206#### `divmod(a, b)`207208Принимает два (не комплексных) числа и возвращает пару чисел, состоящую из их частного и остатка при целочисленном делении. Для смешанных типов операндов применяются правила бинарных арифметических операторов. Для целых чисел результат такой же, как `(a // b, a % b)`. Для чисел с плавающей запятой результат равен `(q, a % b)`, где *q* обычно равно `math.floor(a / b)`, но может быть на 1 меньше. В любом случае `q * b + a % b` очень близко к *a*, и если `a % b` не равно нулю, оно имеет тот же знак, что и *b*, а `0 <= abs(a % b) < abs(b)`.209210#### `enumerate(iterable, start=0)`211212Возвращает объект enumerate. *iterable* должен быть последовательностью, [*итератором*](https://python-all.ru/3.3/glossary.html#term-iterator) или другим объектом, поддерживающим итерацию. Метод [`__next__()`](https://python-all.ru/3.3/library/stdtypes.html#iterator.__next__) итератора, возвращаемого [`enumerate()`](https://python-all.ru/3.3/library/functions.html#enumerate), возвращает кортеж, содержащий счётчик (начиная с *start*, по умолчанию 0) и значения, полученные при итерации по *iterable*.213214```python215>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']216>>> list(enumerate(seasons))217[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]218>>> list(enumerate(seasons, start=1))219[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]220```221222Эквивалентно следующему:223224```python225def enumerate(sequence, start=0):226 n = start227 for elem in sequence:228 yield n, elem229 n += 1230```231232#### `eval(expression, globals=None, locals=None)`233234Аргументами являются строка и необязательные globals и locals. Если они указаны, *globals* должен быть словарём. Если указаны, *locals* может быть любым отображением (mapping).235236Аргумент *expression* разбирается и вычисляется как выражение Python (технически – список условий) с использованием словарей *globals* и *locals* в качестве глобального и локального пространств имён. Если словарь *globals* присутствует и в нём нет '\_\_builtins\_\_', текущие глобальные переменные копируются в *globals* перед разбором *expression*. Это означает, что *expression* обычно имеет полный доступ к стандартному модулю [`builtins`](https://python-all.ru/3.3/library/builtins.html#module-builtins), и ограниченные окружения распространяются. Если словарь *locals* опущен, по умолчанию он равен *globals*. Если оба словаря опущены, выражение выполняется в том окружении, где вызвана [`eval()`](https://python-all.ru/3.3/library/functions.html#eval). Возвращаемое значение – результат вычисления выражения. Синтаксические ошибки сообщаются как исключения. Пример:237238```python239>>> x = 1240>>> eval('x+1')2412242```243244Эта функция также может использоваться для выполнения произвольных объектов кода (например, созданных с помощью [`compile()`](https://python-all.ru/3.3/library/functions.html#compile)). В этом случае передаётся объект кода вместо строки. Если объект кода был скомпилирован с `'exec'` в качестве аргумента *mode*, возвращаемое значение [`eval()`](https://python-all.ru/3.3/library/functions.html#eval) будет равно `None`.245246Подсказки: динамическое выполнение инструкций поддерживается функцией [`exec()`](https://python-all.ru/3.3/library/functions.html#exec). Функции [`globals()`](https://python-all.ru/3.3/library/functions.html#globals) и [`locals()`](https://python-all.ru/3.3/library/functions.html#locals) возвращают текущий глобальный и локальный словари соответственно, которые могут быть полезны для передачи для использования с [`eval()`](https://python-all.ru/3.3/library/functions.html#eval) или [`exec()`](https://python-all.ru/3.3/library/functions.html#exec).247248См. [`ast.literal_eval()`](https://python-all.ru/3.3/library/ast.html#ast.literal_eval) – функцию, позволяющую безопасно вычислять строки с выражениями, содержащими только литералы.249250#### `exec(object[, globals[, locals]])`251252Эта функция поддерживает динамическое выполнение кода Python. *object* должен быть строкой или объектом кода. Если это строка, она разбирается как набор инструкций Python, который затем выполняется (если не возникнет синтаксическая ошибка). [\[1\]](https://python-all.ru/3.3/library/functions.html#id2) Если это объект кода, он просто выполняется. В любом случае предполагается, что выполняемый код корректен как файловый ввод (см. раздел «Файловый ввод» в справочном руководстве). Обратите внимание, что операторы [`return`](https://python-all.ru/3.3/reference/simple_stmts.html#return) и [`yield`](https://python-all.ru/3.3/reference/simple_stmts.html#yield) не могут использоваться вне определений функций, даже в контексте кода, переданного функции [`exec()`](https://python-all.ru/3.3/library/functions.html#exec). Возвращаемое значение – `None`.253254Во всех случаях, если необязательные части опущены, код выполняется в текущей области видимости. Если указан только *globals*, он должен быть словарём, который будет использоваться как для глобальных, так и для локальных переменных. Если указаны *globals* и *locals*, они используются для глобальных и локальных переменных соответственно. Если указан, *locals* может быть любым отображающим объектом. Помните, что на уровне модуля globals и locals – один и тот же словарь. Если exec получает два отдельных объекта в качестве *globals* и *locals*, код будет выполняться так, как если бы он был встроен в определение класса.255256Если словарь *globals* не содержит значения для ключа `__builtins__`, под этот ключ вставляется ссылка на словарь встроенного модуля [`builtins`](https://python-all.ru/3.3/library/builtins.html#module-builtins). Таким образом можно контролировать, какие встроенные функции доступны выполняемому коду, вставив собственный словарь `__builtins__` в *globals* перед передачей его в [`exec()`](https://python-all.ru/3.3/library/functions.html#exec).257258> **Примечание**259>260> Встроенные функции [`globals()`](https://python-all.ru/3.3/library/functions.html#globals) и [`locals()`](https://python-all.ru/3.3/library/functions.html#locals) возвращают текущий глобальный и локальный словари соответственно, что может быть полезно для их передачи в качестве второго и третьего аргумента в [`exec()`](https://python-all.ru/3.3/library/functions.html#exec).261262> **Примечание**263>264> Словарь *locals* по умолчанию действует так, как описано ниже для функции [`locals()`](https://python-all.ru/3.3/library/functions.html#locals): не следует пытаться изменять словарь *locals* по умолчанию. Передайте явный словарь *locals*, если нужно увидеть влияние кода на *locals* после возврата из функции [`exec()`](https://python-all.ru/3.3/library/functions.html#exec).265266#### `filter(function, iterable)`267268Создаёт итератор из тех элементов *iterable*, для которых *function* возвращает истину. *iterable* может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если *function* равно `None`, предполагается тождественная функция, то есть удаляются все элементы *iterable*, которые являются ложными.269270Обратите внимание, что `filter(function, iterable)` эквивалентно генераторному выражению `(item for item in iterable if function(item))`, если function не равно `None`, и `(item for item in iterable if item)`, если function равно `None`.271272См. [`itertools.filterfalse()`](https://python-all.ru/3.3/library/itertools.html#itertools.filterfalse) – дополняющую функцию, которая возвращает элементы *iterable*, для которых *function* возвращает ложь.273274#### `float([x])`275276Преобразует строку или число в число с плавающей запятой.277278Если аргумент является строкой, она должна содержать десятичное число, которое может предваряться знаком и может быть окружено пробелами. Необязательный знак может быть `'+'` или `'-'`; знак `'+'` не влияет на результирующее значение. Аргумент также может быть строкой, представляющей NaN (не число), или положительную или отрицательную бесконечность. Более точно, входная строка должна соответствовать следующей грамматике после удаления начальных и конечных пробельных символов:279280```281282sign ::= "+" | "-"283infinity ::= "Infinity" | "inf"284nan ::= "nan"285numeric_value ::= floatnumber | infinity | nan286numeric_string ::= [sign] numeric_value287```288289Здесь `floatnumber` – это форма литерала числа с плавающей точкой Python, описанная в [*Литералы чисел с плавающей точкой*](https://python-all.ru/3.3/reference/lexical_analysis.html#floating). Регистр не имеет значения, так, например, “inf”, “Inf”, “INFINITY” и “iNfINity” – все это допустимые написания для положительной бесконечности.290291В противном случае, если аргумент является целым числом или числом с плавающей точкой, возвращается число с плавающей точкой с тем же значением (в пределах точности чисел с плавающей точкой Python). Если аргумент выходит за диапазон чисел с плавающей точкой Python, будет возбуждено исключение [`OverflowError`](https://python-all.ru/3.3/library/exceptions.html#OverflowError).292293Для обычного объекта Python `x` вызов `float(x)` делегируется методу `x.__float__()`.294295Если аргумент не указан, возвращается `0.0`.296297Примеры:298299```python300>>> float('+1.23')3011.23302>>> float(' -12345\n')303-12345.0304>>> float('1e-003')3050.001306>>> float('+1E6')3071000000.0308>>> float('-Infinity')309-inf310```311312Тип float описан в разделе [*Числовые типы – int, float, complex*](https://python-all.ru/3.3/library/stdtypes.html#typesnumeric).313314#### `format(value[, format_spec])`315316Преобразует *значение* в «форматированное» представление, управляемое *спецификацией формата*. Интерпретация *спецификации формата* зависит от типа аргумента *значение*, однако существует стандартный синтаксис форматирования, используемый большинством встроенных типов: [*Мини-язык спецификации формата*](https://python-all.ru/3.3/library/string.html#formatspec).317318Значение *format\_spec* по умолчанию – пустая строка, что обычно даёт тот же эффект, что и вызов [`str(value)`](https://python-all.ru/3.3/library/stdtypes.html#str).319320Вызов `format(value, format_spec)` преобразуется в `type(value).__format__(format_spec)`, что обходит словарь экземпляра при поиске метода [`__format__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__format__) значения. Если метод не найден или если *format\_spec* или возвращаемое значение не являются строками, возбуждается исключение [`TypeError`](https://python-all.ru/3.3/library/exceptions.html#TypeError).321322#### `frozenset([iterable])`323324Возвращает новый объект [`frozenset`](https://python-all.ru/3.3/library/stdtypes.html#frozenset), опционально с элементами из *iterable*. `frozenset` – встроенный класс. См. [`frozenset`](https://python-all.ru/3.3/library/stdtypes.html#frozenset) и [*Типы множеств – set, frozenset*](https://python-all.ru/3.3/library/stdtypes.html#types-set) для документации по этому классу.325326Для других контейнеров см. встроенные классы [`set`](https://python-all.ru/3.3/library/stdtypes.html#set), [`list`](https://python-all.ru/3.3/library/stdtypes.html#list), [`tuple`](https://python-all.ru/3.3/library/stdtypes.html#tuple) и [`dict`](https://python-all.ru/3.3/library/stdtypes.html#dict), а также модуль [`collections`](https://python-all.ru/3.3/library/collections.html#module-collections).327328#### `getattr(object, name[, default])`329330Возвращает значение именованного атрибута объекта *object*. *name* должен быть строкой. Если строка является именем одного из атрибутов объекта, результатом будет значение этого атрибута. Например, `getattr(x, 'foobar')` эквивалентно `x.foobar`. Если именованный атрибут не существует, возвращается *default*, если он предоставлен, в противном случае возбуждается [`AttributeError`](https://python-all.ru/3.3/library/exceptions.html#AttributeError).331332#### `globals()`333334Возвращает словарь, представляющий текущую таблицу глобальных символов. Это всегда словарь текущего модуля (внутри функции или метода это модуль, где она определена, а не модуль, из которого она вызывается).335336#### `hasattr(object, name)`337338Аргументы – объект и строка. Результат – `True`, если строка является именем одного из атрибутов объекта, и `False` в противном случае. (Это реализуется вызовом `getattr(object, name)` и проверкой, возбуждает ли он [`AttributeError`](https://python-all.ru/3.3/library/exceptions.html#AttributeError) или нет.)339340#### `hash(object)`341342> Возвращает хеш-значение объекта (если оно есть). Хеш-значения – целые числа. Они используются для быстрого сравнения ключей словаря при поиске. Числовые значения, равные при сравнении, имеют одинаковое хеш-значение (даже если они разных типов, как в случае 1 и 1.0).343344> **Примечание**345>346> Для объектов с пользовательскими методами [`__hash__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__hash__) обратите внимание, что [`hash()`](https://python-all.ru/3.3/library/functions.html#hash) усекает возвращаемое значение в зависимости от разрядности хост-машины. Подробнее см. [`__hash__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__hash__).347348#### `help([object])`349350Запускает встроенную справочную систему. (Эта функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная справочная система запускается на консоли интерпретатора. Если аргумент – строка, то она ищется как имя модуля, функции, класса, метода, ключевого слова или темы документации, и на консоль выводится страница справки. Если аргумент – объект любого другого типа, генерируется страница справки по этому объекту.351352Эта функция добавляется во встроенное пространство имён модулем [`site`](https://python-all.ru/3.3/library/site.html#module-site).353354#### `hex(x)`355356Преобразует целое число в шестнадцатеричную строку в нижнем регистре с префиксом «0x», например:357358```python359>>> hex(255)360'0xff'361>>> hex(-42)362'-0x2a'363```364365Если x не является объектом [`int`](https://python-all.ru/3.3/library/functions.html#int) в Python, он должен определить метод \_\_index\_\_(), возвращающий целое число.366367См. также [`int()`](https://python-all.ru/3.3/library/functions.html#int) для преобразования шестнадцатеричной строки в целое число с основанием 16.368369> **Примечание**370>371> Чтобы получить шестнадцатеричное строковое представление числа с плавающей запятой, используйте метод [`float.hex()`](https://python-all.ru/3.3/library/stdtypes.html#float.hex).372373#### `id(object)`374375Возвращает «идентификатор» объекта. Это целое число, которое гарантированно уникально и постоянно для данного объекта на протяжении его жизни. Два объекта с непересекающимися временами жизни могут иметь одинаковое значение [`id()`](https://python-all.ru/3.3/library/functions.html#id).376377**Особенность реализации CPython:** Это адрес объекта в памяти.378379#### `input([prompt])`380381Если аргумент *prompt* присутствует, он выводится в стандартный вывод без завершающего перевода строки. Затем функция читает строку из ввода, преобразует её в строку (удаляя завершающий перевод строки) и возвращает её. Когда достигается конец файла (EOF), возбуждается [`EOFError`](https://python-all.ru/3.3/library/exceptions.html#EOFError). Пример:382383```python384>>> s = input('--> ') 385--> Monty Python's Flying Circus386>>> s 387"Monty Python's Flying Circus"388```389390Если модуль [`readline`](https://python-all.ru/3.3/library/readline.html#module-readline) был загружен, то [`input()`](https://python-all.ru/3.3/library/functions.html#input) будет использовать его для предоставления расширенных возможностей редактирования строк и истории.391392#### `int(x=0)`393394#### `int(x, base=10)`395396Преобразует число или строку *x* в целое число, либо возвращает `0`, если аргументы не переданы. Если *x* – число, возвращает [`x.__int__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__int__). Для чисел с плавающей запятой это отсекает дробную часть в сторону нуля.397398Если *x* не является числом или задан *base*, то *x* должен быть строкой, экземпляром [`bytes`](https://python-all.ru/3.3/library/functions.html#bytes) или [`bytearray`](https://python-all.ru/3.3/library/functions.html#bytearray), представляющим [*целочисленный литерал*](https://python-all.ru/3.3/reference/lexical_analysis.html#integers) с основанием *base*. При желании литералу может предшествовать `+` или `-` (без пробелов) и он может быть окружён пробельными символами. Литерал с основанием 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)`.399400Целочисленный тип описан в разделе [*Числовые типы – int, float, complex*](https://python-all.ru/3.3/library/stdtypes.html#typesnumeric).401402#### `isinstance(object, classinfo)`403404Возвращает True, если аргумент *object* является экземпляром класса *classinfo* или его (прямого, косвенного или [*виртуального*](https://python-all.ru/3.3/glossary.html#term-abstract-base-class)) подкласса. Если *object* не является объектом указанного типа, функция всегда возвращает False. Если *classinfo* не является классом (объектом-типом), он может быть кортежем объектов-типов или рекурсивно содержать другие такие кортежи (другие типы последовательностей не принимаются). Если *classinfo* не является типом или кортежем типов и таких кортежей, возбуждается исключение [`TypeError`](https://python-all.ru/3.3/library/exceptions.html#TypeError).405406#### `issubclass(class, classinfo)`407408Возвращает true, если *class* является подклассом (прямым, косвенным или [*виртуальным*](https://python-all.ru/3.3/glossary.html#term-abstract-base-class)) *classinfo*. Класс считается подклассом самого себя. *classinfo* может быть кортежем объектов классов, в этом случае проверяется каждая запись в *classinfo*. В любом другом случае возбуждается исключение [`TypeError`](https://python-all.ru/3.3/library/exceptions.html#TypeError).409410#### `iter(object[, sentinel])`411412Возвращает объект [*итератора*](https://python-all.ru/3.3/glossary.html#term-iterator). Первый аргумент интерпретируется совершенно по-разному в зависимости от наличия второго аргумента. Без второго аргумента *object* должен быть объектом коллекции, поддерживающим протокол итерации (метод [`__iter__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__iter__)), или он должен поддерживать протокол последовательности (метод [`__getitem__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__getitem__) с целочисленными аргументами, начиная с `0`). Если он не поддерживает ни один из этих протоколов, возбуждается [`TypeError`](https://python-all.ru/3.3/library/exceptions.html#TypeError). Если задан второй аргумент *sentinel*, то *object* должен быть вызываемым объектом. Созданный в этом случае итератор будет вызывать *object* без аргументов при каждом вызове своего метода [`__next__()`](https://python-all.ru/3.3/library/stdtypes.html#iterator.__next__); если возвращённое значение равно *sentinel*, будет возбуждено [`StopIteration`](https://python-all.ru/3.3/library/exceptions.html#StopIteration), в противном случае значение будет возвращено.413414См. также [*Типы итераторов*](https://python-all.ru/3.3/library/stdtypes.html#typeiter).415416Одно из полезных применений второй формы [`iter()`](https://python-all.ru/3.3/library/functions.html#iter) – чтение строк файла до определённой строки. Следующий пример читает файл до тех пор, пока метод [`readline()`](https://python-all.ru/3.3/library/io.html#io.TextIOBase.readline) не вернёт пустую строку:417418```python419with open('mydata.txt') as fp:420 for line in iter(fp.readline, ''):421 process_line(line)422```423424#### `len(s)`425426Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (строка, кортеж или список) или отображение (словарь).427428#### `list([iterable])`429430[`list`](https://python-all.ru/3.3/library/stdtypes.html#list) на самом деле не функция, а изменяемый тип последовательности, как описано в [*Списки*](https://python-all.ru/3.3/library/stdtypes.html#typesseq-list) и [*Типы последовательностей – list, tuple, range*](https://python-all.ru/3.3/library/stdtypes.html#typesseq).431432#### `locals()`433434Обновляет и возвращает словарь, представляющий текущую таблицу локальных символов. Свободные переменные возвращаются [`locals()`](https://python-all.ru/3.3/library/functions.html#locals) при вызове в блоках функций, но не в блоках классов.435436> **Примечание**437>438> Содержимое этого словаря не следует изменять; изменения могут не повлиять на значения локальных и свободных переменных, используемых интерпретатором.439440#### `map(function, iterable, ...)`441442Возвращает итератор, который применяет *function* к каждому элементу *iterable*, возвращая результаты. Если переданы дополнительные аргументы *iterable*, *function* должна принимать столько же аргументов и применяется к элементам из всех итерируемых объектов параллельно. При нескольких итерируемых объектах итератор останавливается, когда самый короткий из них исчерпан. Для случаев, когда входные данные функции уже организованы в кортежи аргументов, см. [`itertools.starmap()`](https://python-all.ru/3.3/library/itertools.html#itertools.starmap).443444#### `max(iterable, *[, key])`445446#### `max(arg1, arg2, *args[, key])`447448Возвращает наибольший элемент итерируемого объекта или наибольший из двух или более аргументов.449450Если передан один позиционный аргумент, *iterable* должен быть непустым итерируемым объектом (например, непустой строкой, кортежем или списком). Возвращается наибольший элемент в итерируемом объекте. Если передано два или более позиционных аргумента, возвращается наибольший из этих позиционных аргументов.451452Необязательный аргумент *key*, передаваемый только по ключевому слову, задаёт функцию упорядочивания с одним аргументом, аналогичную используемой в [`list.sort()`](https://python-all.ru/3.3/library/stdtypes.html#list.sort).453454Если несколько элементов являются максимальными, функция возвращает первый из них. Это согласуется с другими инструментами, сохраняющими устойчивость сортировки, такими как `sorted(iterable, key=keyfunc, reverse=True)[0]` и `heapq.nlargest(1, iterable, key=keyfunc)`.455456#### `memoryview(obj)`457458Возвращает объект «представление памяти» (memory view), созданный из переданного аргумента. Дополнительную информацию см. в [*Memory Views*](https://python-all.ru/3.3/library/stdtypes.html#typememoryview).459460#### `min(iterable, *[, key])`461462#### `min(arg1, arg2, *args[, key])`463464Возвращает наименьший элемент итерируемого объекта или наименьший из двух или более аргументов.465466Если указан один позиционный аргумент, *iterable* должен быть непустой итерабельной последовательностью (например, непустой строкой, кортежем или списком). Возвращается наименьший элемент из этой последовательности. Если указаны два или более позиционных аргумента, возвращается наименьший среди них.467468Необязательный аргумент *key*, передаваемый только по ключевому слову, задаёт функцию упорядочивания с одним аргументом, подобную той, что используется в [`list.sort()`](https://python-all.ru/3.3/library/stdtypes.html#list.sort).469470Если несколько элементов являются минимальными, функция возвращает первый из встреченных. Это согласуется с другими инструментами, сохраняющими устойчивость сортировки, такими как `sorted(iterable, key=keyfunc)[0]` и `heapq.nsmallest(1, iterable, key=keyfunc)`.471472#### `next(iterator[, default])`473474Извлекает следующий элемент из *iterator* вызовом его метода [`__next__()`](https://python-all.ru/3.3/library/stdtypes.html#iterator.__next__). Если задан *default*, он возвращается, когда итератор исчерпан; в противном случае возбуждается [`StopIteration`](https://python-all.ru/3.3/library/exceptions.html#StopIteration).475476#### `object()`477478Возвращает новый объект без свойств. [`object`](https://python-all.ru/3.3/library/functions.html#object) – базовый класс для всех классов. Он имеет методы, общие для всех экземпляров классов Python. Эта функция не принимает аргументов.479480> **Примечание**481>482> [`object`](https://python-all.ru/3.3/library/functions.html#object) *не* имеет [`__dict__`](https://python-all.ru/3.3/library/stdtypes.html#object.__dict__), поэтому невозможно назначать произвольные атрибуты экземпляру класса [`object`](https://python-all.ru/3.3/library/functions.html#object).483484#### `oct(x)`485486Преобразует целое число в восьмеричную строку. Результат – допустимое выражение Python. Если *x* не является объектом [`int`](https://python-all.ru/3.3/library/functions.html#int) Python, он должен определить метод [`__index__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__index__), возвращающий целое число.487488#### `open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)`489490Открывает *file* и возвращает соответствующий [*объект файла*](https://python-all.ru/3.3/glossary.html#term-file-object). Если файл не удаётся открыть, возбуждается [`OSError`](https://python-all.ru/3.3/library/exceptions.html#OSError).491492*file* – это строка или bytes-объект, задающий путь (абсолютный или относительный текущего рабочего каталога) к открываемому файлу, или целочисленный файловый дескриптор оборачиваемого файла. (Если задан файловый дескриптор, он закрывается, когда возвращаемый объект ввода-вывода закрывается, если только *closefd* не установлен в `False`.)493494*mode* – необязательная строка, задающая режим, в котором открывается файл. По умолчанию `'r'` – открытие для чтения в текстовом режиме. Другие распространённые значения: `'w'` для записи (с усечением файла, если он уже существует), `'x'` для монопольного создания и `'a'` для дозаписи (что в *некоторых* системах Unix означает, что *все* операции записи добавляются в конец файла независимо от текущей позиции). В текстовом режиме, если *encoding* не указана, используемая кодировка зависит от платформы: вызов `locale.getpreferredencoding(False)` возвращает текущую локальную кодировку. (Для чтения и записи сырых байтов используйте двоичный режим и оставьте *encoding* не указанным.) Допустимые режимы:495496| Символ | Значение |497| --- | --- |498| `'r'` | открытие для чтения (по умолчанию) |499| `'w'` | открытие для записи, с предварительным усечением файла |500| `'x'` | открытие для эксклюзивного создания, завершается ошибкой, если файл уже существует |501| `'a'` | открытие для записи, дозапись в конец файла, если он существует |502| `'b'` | двоичный режим |503| `'t'` | текстовый режим (по умолчанию) |504| `'+'` | открывает дисковый файл для обновления (чтения и записи) |505| `'U'` | режим универсальных новых строк (для обратной совместимости; не должен использоваться в новом коде) |506507Режим по умолчанию – `'r'` (открытие для чтения текста, синоним `'rt'`). Для двоичного чтения-записи режим `'w+b'` открывает и усекает файл до 0 байт. `'r+b'` открывает файл без усечения.508509Как упоминалось в [*Обзоре*](https://python-all.ru/3.3/library/io.html#io-overview), Python различает двоичный и текстовый ввод-вывод. Файлы, открытые в двоичном режиме (включая `'b'` в аргументе *mode*), возвращают содержимое как объекты [`bytes`](https://python-all.ru/3.3/library/functions.html#bytes) без декодирования. В текстовом режиме (по умолчанию или когда `'t'` присутствует в аргументе *mode*) содержимое файла возвращается как [`str`](https://python-all.ru/3.3/library/stdtypes.html#str), при этом байты сначала декодируются с использованием кодировки, зависящей от платформы, или указанной *encoding*, если она задана.510511> **Примечание**512>513> Python не зависит от представления текстовых файлов в базовой операционной системе; вся обработка выполняется самим Python и, следовательно, не зависит от платформы.514515*buffering* – необязательное целое число, используемое для задания политики буферизации. Передайте 0, чтобы отключить буферизацию (допустимо только в двоичном режиме), 1 – для построчной буферизации (работает только в текстовом режиме), и целое число больше 1 – для указания размера буфера фиксированными блоками в байтах. Если аргумент *buffering* не задан, политика буферизации по умолчанию работает следующим образом:516517- Двоичные файлы буферизуются блоками фиксированного размера; размер буфера выбирается эвристически, пытаясь определить «размер блока» нижележащего устройства и прибегая к [`io.DEFAULT_BUFFER_SIZE`](https://python-all.ru/3.3/library/io.html#io.DEFAULT_BUFFER_SIZE). На многих системах буфер обычно имеет размер 4096 или 8192 байта.518- «Интерактивные» текстовые файлы (файлы, для которых [`isatty()`](https://python-all.ru/3.3/library/io.html#io.IOBase.isatty) возвращает `True`) используют буферизацию по строкам. Остальные текстовые файлы используют политику, описанную выше для двоичных файлов.519520*encoding* – это название кодировки, используемой для декодирования или кодирования файла. Она должна использоваться только в текстовом режиме. Кодировка по умолчанию зависит от платформы (то, что возвращает [`locale.getpreferredencoding()`](https://python-all.ru/3.3/library/locale.html#locale.getpreferredencoding)), но можно использовать любую кодировку, поддерживаемую Python. Список поддерживаемых кодировок см. в модуле [`codecs`](https://python-all.ru/3.3/library/codecs.html#module-codecs).521522*errors* – необязательная строка, определяющая, как обрабатывать ошибки кодирования и декодирования. Этот аргумент нельзя использовать в двоичном режиме. Доступно множество стандартных обработчиков ошибок, но также допустимо любое имя обработчика, зарегистрированное с помощью [`codecs.register_error()`](https://python-all.ru/3.3/library/codecs.html#codecs.register_error). Стандартные имена:523524- `'strict'` – возбуждает исключение [`ValueError`](https://python-all.ru/3.3/library/exceptions.html#ValueError) при ошибке кодирования. Значение по умолчанию `None` имеет тот же эффект.525- `'ignore'` игнорирует ошибки. Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных.526- `'replace'` приводит к вставке замещающего маркера (например, `'?'`) там, где присутствуют повреждённые данные.527- `'surrogateescape'` представляет любые некорректные байты как кодовые точки из частной области использования Unicode в диапазоне от U+DC80 до U+DCFF. Затем эти частные кодовые точки снова преобразуются в те же байты при использовании обработчика ошибок `surrogateescape` при записи данных. Это полезно для обработки файлов в неизвестной кодировке.528- `'xmlcharrefreplace'` поддерживается только при записи в файл. Символы, не поддерживаемые кодировкой, заменяются соответствующей символьной ссылкой XML `&#nnn;`.529- `'backslashreplace'` (также поддерживается только при записи) заменяет неподдерживаемые символы управляющими последовательностями Python с обратной косой чертой.530531*newline* управляет работой режима [*универсальных символов новой строки*](https://python-all.ru/3.3/glossary.html#term-universal-newlines) (применяется только к текстовому режиму). Может принимать значения `None`, `''`, `'\n'`, `'\r'` и `'\r\n'`. Работает следующим образом:532533- При чтении из потока, если *newline* равен `None`, включается режим универсальных символов новой строки. Строки во входных данных могут заканчиваться на `'\n'`, `'\r'` или `'\r\n'`, и они преобразуются в `'\n'` перед возвратом вызывающему коду. Если он равен `''`, режим универсальных символов новой строки также включен, но концы строк возвращаются без преобразования. Если он имеет любое другое допустимое значение, входные строки завершаются только указанной строкой, и конец строки возвращается вызывающему коду без преобразования.534- При записи в поток, если *newline* равен `None`, все записанные символы `'\n'` преобразуются в системный разделитель строк по умолчанию [`os.linesep`](https://python-all.ru/3.3/library/os.html#os.linesep). Если *newline* равен `''` или `'\n'`, никакого преобразования не происходит. Если *newline* – любое другое допустимое значение, все записанные символы `'\n'` преобразуются в указанную строку.535536Если *closefd* равен `False` и был указан файловый дескриптор, а не имя файла, то базовый файловый дескриптор останется открытым при закрытии файла. Если указано имя файла, *closefd* не влияет и должен быть `True` (значение по умолчанию).537538Можно использовать собственный открыватель, передав вызываемый объект в качестве *opener*. Базовый файловый дескриптор для объекта файла затем получается вызовом *opener* с аргументами (*file*, *flags*). *opener* должен возвращать открытый файловый дескриптор (передача [`os.open`](https://python-all.ru/3.3/library/os.html#os.open) в качестве *opener* даёт функциональность, аналогичную передаче `None`).539540В следующем примере используется параметр [*dir\_fd*](https://python-all.ru/3.3/library/os.html#dir-fd) функции [`os.open()`](https://python-all.ru/3.3/library/os.html#os.open) для открытия файла относительно заданного каталога:541542```python543>>> import os544>>> dir_fd = os.open('somedir', os.O_RDONLY)545>>> def opener(path, flags):546... return os.open(path, flags, dir_fd=dir_fd)547...548>>> with open('spamspam.txt', 'w', opener=opener) as f:549... print('This will be written to somedir/spamspam.txt', file=f)550...551>>> os.close(dir_fd) # не допустить утечки файлового дескриптора552```553554Изменено в версии 3.3: Добавлен параметр *opener*. Добавлен режим `'x'`.555556Тип [*файлового объекта*](https://python-all.ru/3.3/glossary.html#term-file-object), возвращаемого функцией [`open()`](https://python-all.ru/3.3/library/functions.html#open), зависит от режима. Когда [`open()`](https://python-all.ru/3.3/library/functions.html#open) используется для открытия файла в текстовом режиме (`'w'`, `'r'`, `'wt'`, `'rt'` и т.д.), возвращается подкласс [`io.TextIOBase`](https://python-all.ru/3.3/library/io.html#io.TextIOBase) (а именно [`io.TextIOWrapper`](https://python-all.ru/3.3/library/io.html#io.TextIOWrapper)). При использовании для открытия файла в двоичном режиме с буферизацией возвращаемый класс является подклассом [`io.BufferedIOBase`](https://python-all.ru/3.3/library/io.html#io.BufferedIOBase). Точный класс зависит от режима: в режиме чтения двоичных данных возвращается [`io.BufferedReader`](https://python-all.ru/3.3/library/io.html#io.BufferedReader); в режимах записи и дозаписи двоичных данных возвращается [`io.BufferedWriter`](https://python-all.ru/3.3/library/io.html#io.BufferedWriter), а в режиме чтения/записи – [`io.BufferedRandom`](https://python-all.ru/3.3/library/io.html#io.BufferedRandom). Если буферизация отключена, возвращается необработанный поток, подкласс [`io.RawIOBase`](https://python-all.ru/3.3/library/io.html#io.RawIOBase), [`io.FileIO`](https://python-all.ru/3.3/library/io.html#io.FileIO).557558См. также модули для работы с файлами, такие как [`fileinput`](https://python-all.ru/3.3/library/fileinput.html#module-fileinput), [`io`](https://python-all.ru/3.3/library/io.html#module-io) (где объявлена [`open()`](https://python-all.ru/3.3/library/functions.html#open)), [`os`](https://python-all.ru/3.3/library/os.html#module-os), [`os.path`](https://python-all.ru/3.3/library/os.path.html#module-os.path), [`tempfile`](https://python-all.ru/3.3/library/tempfile.html#module-tempfile) и [`shutil`](https://python-all.ru/3.3/library/shutil.html#module-shutil).559560Изменено в версии 3.3: [`IOError`](https://python-all.ru/3.3/library/exceptions.html#IOError) раньше вызывалось, теперь это псевдоним [`OSError`](https://python-all.ru/3.3/library/exceptions.html#OSError). [`FileExistsError`](https://python-all.ru/3.3/library/exceptions.html#FileExistsError) теперь вызывается, если файл, открытый в эксклюзивном режиме создания (`'x'`), уже существует.561562#### `ord(c)`563564Принимает строку, представляющую один символ Unicode, и возвращает целое число – кодовую точку Unicode этого символа. Например, `ord('a')` возвращает целое число `97`, а `ord('\u2020')` возвращает `8224`. Это обратная функция к [`chr()`](https://python-all.ru/3.3/library/functions.html#chr).565566#### `pow(x, y[, z])`567568Возвращает *x* в степени *y*; если указан *z*, возвращает *x* в степени *y* по модулю *z* (вычисляется эффективнее, чем `pow(x, y) % z`). Двухаргументная форма `pow(x, y)` эквивалентна использованию оператора возведения в степень: `x**y`.569570Аргументы должны быть числовых типов. При смешанных типах операндов применяются правила приведения для бинарных арифметических операторов. Для операндов типа [`int`](https://python-all.ru/3.3/library/functions.html#int) результат имеет тот же тип, что и операнды (после приведения), если только второй аргумент не отрицателен; в этом случае все аргументы преобразуются в float и возвращается результат типа float. Например, `10**2` возвращает `100`, а `10**-2` возвращает `0.01`. Если второй аргумент отрицателен, третий аргумент должен быть опущен. Если указан *z*, то *x* и *y* должны быть целочисленными, а *y* – неотрицательным.571572#### `print(*objects, sep=' ', end='\n', file=sys.stdout, flush=False)`573574Выводит *objects* в поток *file*, разделяя их *sep* и завершая строкой *end*. *sep*, *end* и *file*, если они присутствуют, должны передаваться как именованные аргументы.575576Все непозиционные аргументы преобразуются в строки, как это делает [`str()`](https://python-all.ru/3.3/library/stdtypes.html#str), и записываются в поток, разделяясь *sep* и завершаясь *end*. И *sep*, и *end* должны быть строками; они также могут быть `None`, что означает использование значений по умолчанию. Если *objects* не переданы, [`print()`](https://python-all.ru/3.3/library/functions.html#print) просто запишет *end*.577578Аргумент *file* должен быть объектом с методом `write(string)`; если он отсутствует или равен `None`, используется [`sys.stdout`](https://python-all.ru/3.3/library/sys.html#sys.stdout). Обычно буферизация вывода определяется *file*, но если именованный аргумент *flush* равен true, поток принудительно сбрасывается.579580Изменено в версии 3.3: Добавлен именованный аргумент *flush*.581582#### `property(fget=None, fset=None, fdel=None, doc=None)`583584Возвращает атрибут property.585586*fget* – функция для получения значения атрибута, *fset* – функция для установки, а *fdel* – функция для удаления атрибута. Типичное применение – определение управляемого атрибута `x`:587588```python589class C:590 def __init__(self):591 self._x = None592593 def getx(self):594 return self._x595 def setx(self, value):596 self._x = value597 def delx(self):598 del self._x599 x = property(getx, setx, delx, "I'm the 'x' property.")600```601602Если *c* – экземпляр класса *C*, то `c.x` вызовет геттер, `c.x = value` вызовет сеттер, а `del c.x` – делитер.603604Если указан, *doc* будет строкой документации свойства. В противном случае свойство копирует строку документации *fget* (если она существует). Это позволяет легко создавать свойства только для чтения, используя [`property()`](https://python-all.ru/3.3/library/functions.html#property) в качестве [*декоратора*](https://python-all.ru/3.3/glossary.html#term-decorator):605606```python607class Parrot:608 def __init__(self):609 self._voltage = 100000610611 @property612 def voltage(self):613 """Получить текущее напряжение."""614 return self._voltage615```616617превращает метод `voltage()` в «геттер» для атрибута только для чтения с тем же именем.618619Объект свойства имеет методы `getter`, `setter` и `deleter`, которые можно использовать как декораторы. Они создают копию свойства с соответствующей функцией доступа, установленной на декорируемую функцию. Это лучше всего объяснить на примере:620621```python622class C:623 def __init__(self):624 self._x = None625626 @property627 def x(self):628 """Я – свойство 'x'."""629 return self._x630631 @x.setter632 def x(self, value):633 self._x = value634635 @x.deleter636 def x(self):637 del self._x638```639640Этот код полностью эквивалентен первому примеру. Убедитесь, что дополнительные функции имеют то же имя, что и исходное свойство (в данном случае `x`).641642Возвращаемое свойство также имеет атрибуты `fget`, `fset` и `fdel`, соответствующие аргументам конструктора.643644#### `range(stop)`645646#### `range(start, stop[, step])`647648На самом деле [`range`](https://python-all.ru/3.3/library/stdtypes.html#range) – это не функция, а неизменяемый тип последовательности, как описано в [*Ranges*](https://python-all.ru/3.3/library/stdtypes.html#typesseq-range) и [*Sequence Types – list, tuple, range*](https://python-all.ru/3.3/library/stdtypes.html#typesseq).649650#### `repr(object)`651652Возвращает строку, содержащую печатное представление объекта. Для многих типов эта функция пытается вернуть строку, которая при передаче в [`eval()`](https://python-all.ru/3.3/library/functions.html#eval) дала бы объект с тем же значением; в противном случае представление – это строка в угловых скобках, содержащая имя типа объекта вместе с дополнительной информацией, часто включающей имя и адрес объекта. Класс может управлять тем, что эта функция возвращает для его экземпляров, определив метод [`__repr__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__repr__).653654#### `reversed(seq)`655656Возвращает обратный [*итератор*](https://python-all.ru/3.3/glossary.html#term-iterator). *seq* должен быть объектом, который имеет метод [`__reversed__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__reversed__) или поддерживает протокол последовательности (метод [`__len__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__len__) и метод [`__getitem__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__getitem__) с целочисленными аргументами, начиная с `0`).657658#### `round(number[, ndigits])`659660Возвращает значение с плавающей запятой *number*, округлённое до *ndigits* знаков после десятичной точки. Если *ndigits* опущен, по умолчанию используется ноль. Делегирует `number.__round__(ndigits)`.661662Для встроенных типов, поддерживающих [`round()`](https://python-all.ru/3.3/library/functions.html#round), значения округляются до ближайшего кратного 10 в степени минус *ndigits*; если два кратных одинаково близки, округление производится в сторону чётного выбора (например, оба `round(0.5)` и `round(-0.5)` равны `0`, а `round(1.5)` равно `2`). Возвращаемое значение – целое число, если вызвано с одним аргументом, иначе того же типа, что и *number*.663664> **Примечание**665>666> Поведение [`round()`](https://python-all.ru/3.3/library/functions.html#round) для чисел с плавающей запятой может быть неожиданным: например, `round(2.675, 2)` даёт `2.67` вместо ожидаемого `2.68`. Это не ошибка: это результат того, что большинство десятичных дробей не могут быть представлены точно как float. См. [*Floating Point Arithmetic: Issues and Limitations*](https://python-all.ru/3.3/tutorial/floatingpoint.html#tut-fp-issues) для дополнительной информации.667668#### `set([iterable])`669670Возвращает новый объект [`set`](https://python-all.ru/3.3/library/stdtypes.html#set), опционально с элементами, взятыми из *iterable*. `set` – встроенный класс. См. [`set`](https://python-all.ru/3.3/library/stdtypes.html#set) и [*Set Types – set, frozenset*](https://python-all.ru/3.3/library/stdtypes.html#types-set) для документации об этом классе.671672Для других контейнеров см. встроенные классы [`frozenset`](https://python-all.ru/3.3/library/stdtypes.html#frozenset), [`list`](https://python-all.ru/3.3/library/stdtypes.html#list), [`tuple`](https://python-all.ru/3.3/library/stdtypes.html#tuple) и [`dict`](https://python-all.ru/3.3/library/stdtypes.html#dict), а также модуль [`collections`](https://python-all.ru/3.3/library/collections.html#module-collections).673674#### `setattr(object, name, value)`675676Это аналог [`getattr()`](https://python-all.ru/3.3/library/functions.html#getattr). Аргументами являются объект, строка и произвольное значение. Строка может называть существующий атрибут или новый атрибут. Функция присваивает значение атрибуту, если объект это позволяет. Например, `setattr(x, 'foobar', 123)` эквивалентно `x.foobar = 123`.677678#### `slice(stop)`679680#### `slice(start, stop[, step])`681682Возвращает объект [*slice*](https://python-all.ru/3.3/glossary.html#term-slice), представляющий набор индексов, заданный `range(start, stop, step)`. Аргументы *start* и *step* по умолчанию равны `None`. Объекты среза имеют атрибуты только для чтения `start`, `stop` и `step`, которые просто возвращают значения аргументов (или их значения по умолчанию). Другой явной функциональности у них нет; однако они используются Numerical Python и другими сторонними расширениями. Объекты среза также создаются при использовании расширенного синтаксиса индексации. Например: `a[start:stop:step]` или `a[start:stop, i]`. См. [`itertools.islice()`](https://python-all.ru/3.3/library/itertools.html#itertools.islice) для альтернативной версии, возвращающей итератор.683684#### `sorted(iterable[, key][, reverse])`685686Возвращает новый отсортированный список из элементов *итерируемого объекта*.687688Имеет два необязательных аргумента, которые должны быть указаны как именованные.689690*key* задаёт функцию одного аргумента, используемую для извлечения ключа сравнения из каждого элемента списка: `key=str.lower`. Значение по умолчанию – `None` (сравнивать элементы напрямую).691692*reverse* – логическое значение. Если установлено в `True`, то элементы списка сортируются так, как если бы каждое сравнение было обратным.693694Используйте [`functools.cmp_to_key()`](https://python-all.ru/3.3/library/functools.html#functools.cmp_to_key) для преобразования устаревшей функции *cmp* в функцию *key*.695696Примеры сортировки и краткое руководство по сортировке см. в [Sorting HowTo](https://python-all.ru/3.3/library/functions.html).697698#### `staticmethod(function)`699700Возвращает статический метод для *функции*.701702Статический метод не получает неявный первый аргумент. Чтобы объявить статический метод, используйте такую идиому:703704```python705class C:706 @staticmethod707 def f(arg1, arg2, ...): ...708```709710Форма `@staticmethod` является [*декоратором*](https://python-all.ru/3.3/glossary.html#term-decorator) функции – см. описание определений функций в [*Function definitions*](https://python-all.ru/3.3/reference/compound_stmts.html#function) для подробностей.711712Её можно вызывать как на классе (например, `C.f()`), так и на экземпляре (например, `C().f()`). Экземпляр игнорируется, за исключением его класса.713714Статические методы в Python похожи на те, что есть в Java или C++. Также см. [`classmethod()`](https://python-all.ru/3.3/library/functions.html#classmethod) для варианта, полезного при создании альтернативных конструкторов класса.715716Для получения дополнительной информации о статических методах обратитесь к документации по стандартной иерархии типов в [*Стандартная иерархия типов*](https://python-all.ru/3.3/reference/datamodel.html#types).717718#### `str(object='')`719720#### `str(object=b'', encoding='utf-8', errors='strict')`721722Возвращает строковое представление [`str`](https://python-all.ru/3.3/library/stdtypes.html#str) объекта *object*. См. [`str()`](https://python-all.ru/3.3/library/stdtypes.html#str) для подробностей.723724`str` – это встроенный строковый [*класс*](https://python-all.ru/3.3/glossary.html#term-class). Общую информацию о строках см. в [*Text Sequence Type – str*](https://python-all.ru/3.3/library/stdtypes.html#textseq).725726#### `sum(iterable[, start])`727728Суммирует *start* и элементы *iterable* слева направо и возвращает сумму. *start* по умолчанию равен `0`. Элементами *iterable* обычно являются числа, а начальное значение не может быть строкой.729730Для некоторых случаев использования есть хорошие альтернативы [`sum()`](https://python-all.ru/3.3/library/functions.html#sum). Предпочтительный и быстрый способ объединения последовательности строк – вызов `''.join(sequence)`. Для сложения чисел с плавающей запятой с расширенной точностью см. [`math.fsum()`](https://python-all.ru/3.3/library/math.html#math.fsum). Чтобы объединить несколько итерабельных объектов, рассмотрите использование [`itertools.chain()`](https://python-all.ru/3.3/library/itertools.html#itertools.chain).731732#### `super([type[, object-or-type]])`733734Возвращает прокси-объект, который делегирует вызовы методов родительскому или родственному классу относительно *type*. Это полезно для доступа к унаследованным методам, которые были переопределены в классе. Порядок поиска такой же, как используется в [`getattr()`](https://python-all.ru/3.3/library/functions.html#getattr), за исключением того, что сам *type* пропускается.735736Атрибут [`__mro__`](https://python-all.ru/3.3/library/stdtypes.html#class.__mro__) объекта *type* перечисляет порядок поиска разрешения методов, используемый как [`getattr()`](https://python-all.ru/3.3/library/functions.html#getattr), так и [`super()`](https://python-all.ru/3.3/library/functions.html#super). Атрибут является динамическим и может меняться при обновлении иерархии наследования.737738Если второй аргумент опущен, возвращаемый объект super является несвязанным. Если второй аргумент – объект, `isinstance(obj, type)` должно быть истинно. Если второй аргумент – тип, `issubclass(type2, type)` должно быть истинно (это полезно для методов класса).739740Существует два типичных варианта использования *super*. В иерархии классов с одиночным наследованием *super* можно использовать для ссылки на родительские классы без явного указания их имен, что делает код более поддерживаемым. Это использование тесно параллельно использованию *super* в других языках программирования.741742Второй вариант использования – поддержка кооперативного множественного наследования в динамической среде выполнения. Этот вариант уникален для Python и не встречается в статически компилируемых языках или языках, поддерживающих только одиночное наследование. Это позволяет реализовать «ромбовидные диаграммы», в которых несколько базовых классов реализуют один и тот же метод. Хороший дизайн требует, чтобы этот метод имел одинаковую сигнатуру вызова во всех случаях (поскольку порядок вызовов определяется во время выполнения, поскольку этот порядок адаптируется к изменениям в иерархии классов и поскольку этот порядок может включать родственные классы, неизвестные до выполнения).743744Для обоих вариантов использования типичный вызов родительского класса выглядит так:745746```python747class C(B):748 def method(self, arg):749 super().method(arg) # Делает то же самое, что и:750 # super(C, self).method(arg)751```752753Обратите внимание, что [`super()`](https://python-all.ru/3.3/library/functions.html#super) реализован как часть процесса связывания для явного поиска атрибутов через точки, например `super().__getitem__(name)`. Это достигается за счет реализации собственного метода [`__getattribute__()`](https://python-all.ru/3.3/reference/datamodel.html#object.__getattribute__) для поиска классов в предсказуемом порядке, поддерживающем кооперативное множественное наследование. Соответственно, [`super()`](https://python-all.ru/3.3/library/functions.html#super) не определен для неявного поиска с помощью операторов или инструкций, таких как `super()[name]`.754755Также обратите внимание, что, помимо формы без аргументов, [`super()`](https://python-all.ru/3.3/library/functions.html#super) не ограничен использованием внутри методов. Двухаргументная форма точно задает аргументы и создает соответствующие ссылки. Форма без аргументов работает только внутри определения класса, так как компилятор заполняет необходимые детали, чтобы правильно получить определяемый класс, а также получить доступ к текущему экземпляру для обычных методов.756757За практическими рекомендациями по проектированию кооперативных классов с использованием [`super()`](https://python-all.ru/3.3/library/functions.html#super) обратитесь к [руководству по использованию super()](https://python-all.ru/3.3/library/functions.html).758759#### `tuple([iterable])`760761На самом деле [`tuple`](https://python-all.ru/3.3/library/stdtypes.html#tuple) – это не функция, а неизменяемый тип последовательности, как описано в [*Кортежи*](https://python-all.ru/3.3/library/stdtypes.html#typesseq-tuple) и [*Типы последовательностей – list, tuple, range*](https://python-all.ru/3.3/library/stdtypes.html#typesseq).762763#### `type(object)`764765#### `type(name, bases, dict)`766767С одним аргументом возвращает тип *object*. Возвращаемое значение – это объект типа и, как правило, тот же объект, что возвращается [`object.__class__`](https://python-all.ru/3.3/library/stdtypes.html#instance.__class__).768769Для проверки типа объекта рекомендуется использовать встроенную функцию [`isinstance()`](https://python-all.ru/3.3/library/functions.html#isinstance), поскольку она учитывает подклассы.770771С тремя аргументами возвращает новый объект типа. По сути, это динамическая форма инструкции [`class`](https://python-all.ru/3.3/reference/compound_stmts.html#class). Строка *name* – это имя класса, которое становится атрибутом [`__name__`](https://python-all.ru/3.3/library/stdtypes.html#class.__name__); кортеж *bases* перечисляет базовые классы и становится атрибутом [`__bases__`](https://python-all.ru/3.3/library/stdtypes.html#class.__bases__); а словарь *dict* – это пространство имен, содержащее определения тела класса, и становится атрибутом [`__dict__`](https://python-all.ru/3.3/library/stdtypes.html#object.__dict__). Например, следующие два оператора создают идентичные объекты [`type`](https://python-all.ru/3.3/library/functions.html#type):772773```python774>>> class X:775... a = 1776...777>>> X = type('X', (object,), dict(a=1))778```779780См. также [*Type Objects*](https://python-all.ru/3.3/library/stdtypes.html#bltin-type-objects).781782#### `vars([object])`783784Возвращает атрибут [`__dict__`](https://python-all.ru/3.3/library/stdtypes.html#object.__dict__) модуля, класса, экземпляра или любого другого объекта с атрибутом `__dict__`.785786Такие объекты, как модули и экземпляры, имеют обновляемый атрибут `__dict__`; однако другие объекты могут иметь ограничения на запись своих атрибутов `__dict__` (например, классы используют dictproxy для предотвращения прямых обновлений словаря).787788Без аргументов [`vars()`](https://python-all.ru/3.3/library/functions.html#vars) работает как [`locals()`](https://python-all.ru/3.3/library/functions.html#locals). Обратите внимание, словарь locals полезен только для чтения, поскольку обновления словаря locals игнорируются.789790#### `zip(*iterables)`791792Создаёт итератор, который объединяет элементы из каждой из переданных итерируемых последовательностей.793794Возвращает итератор кортежей, где *i*-й кортеж содержит *i*-й элемент из каждой последовательности аргументов или итерируемого объекта. Итератор останавливается, когда исчерпывается самая короткая входная последовательность. С одним аргументом-итератором возвращает итератор кортежей из одного элемента. Без аргументов возвращает пустой итератор. Эквивалентно:795796```python797def zip(*iterables):798 # zip('ABCD', 'xy') --> Ax By799 sentinel = object()800 iterators = [iter(it) for it in iterables]801 while iterators:802 result = []803 for it in iterators:804 elem = next(it, sentinel)805 if elem is sentinel:806 return807 result.append(elem)808 yield tuple(result)809```810811Гарантируется порядок вычисления итерабельных объектов слева направо. Это делает возможным идиому для группировки ряда данных в группы длины n с использованием `zip(*[iter(s)]*n)`.812813[`zip()`](https://python-all.ru/3.3/library/functions.html#zip) следует использовать с входами разной длины только в тех случаях, когда не важны лишние, непарные значения из более длинных итерабельных объектов. Если эти значения важны, вместо этого используйте [`itertools.zip_longest()`](https://python-all.ru/3.3/library/itertools.html#itertools.zip_longest).814815[`zip()`](https://python-all.ru/3.3/library/functions.html#zip) в сочетании с оператором `*` можно использовать для распаковки списка:816817```python818>>> x = [1, 2, 3]819>>> y = [4, 5, 6]820>>> zipped = zip(x, y)821>>> list(zipped)822[(1, 4), (2, 5), (3, 6)]823>>> x2, y2 = zip(*zip(x, y))824>>> x == list(x2) and y == list(y2)825True826```827828#### `__import__(name, globals=None, locals=None, fromlist=(), level=0)`829830> **Примечание**831>832> Это продвинутая функция, которая не нужна в повседневном программировании на Python, в отличие от [`importlib.import_module()`](https://python-all.ru/3.3/library/importlib.html#importlib.import_module).833834Эта функция вызывается инструкцией [`import`](https://python-all.ru/3.3/reference/simple_stmts.html#import). Она может быть заменена (путем импорта модуля [`builtins`](https://python-all.ru/3.3/library/builtins.html#module-builtins) и присваивания `builtins.__import__`) для изменения семантики инструкции [`import`](https://python-all.ru/3.3/reference/simple_stmts.html#import), но делать это **настоятельно** не рекомендуется, так как обычно проще использовать хуки импорта (см. [**PEP 302**](https://python-all.ru/3.3/library/functions.html)) для достижения тех же целей, и это не вызывает проблем с кодом, который предполагает использование реализации импорта по умолчанию. Прямое использование [`__import__()`](https://python-all.ru/3.3/library/functions.html#__import__) также не рекомендуется; вместо него предпочтительнее [`importlib.import_module()`](https://python-all.ru/3.3/library/importlib.html#importlib.import_module).835836Функция импортирует модуль *name*, возможно, используя заданные *globals* и *locals* для определения того, как интерпретировать имя в контексте пакета. Параметр *fromlist* задает имена объектов или подмодулей, которые должны быть импортированы из модуля, заданного *name*. Стандартная реализация вообще не использует свой аргумент *locals*, а использует *globals* только для определения контекста пакета инструкции [`import`](https://python-all.ru/3.3/reference/simple_stmts.html#import).837838*level* указывает, использовать ли абсолютные или относительные импорты. `0` (по умолчанию) означает выполнять только абсолютные импорты. Положительные значения *level* указывают количество родительских каталогов для поиска относительно каталога модуля, вызывающего [`__import__()`](https://python-all.ru/3.3/library/functions.html#__import__) (см. [**PEP 328**](https://python-all.ru/3.3/library/functions.html) для подробностей).839840Когда переменная *name* имеет вид `package.module`, в обычном случае возвращается пакет верхнего уровня (имя до первой точки), а *не* модуль, заданный *name*. Однако, если задан непустой аргумент *fromlist*, возвращается модуль, заданный *name*.841842Например, инструкция `import spam` приводит к байт-коду, напоминающему следующий код:843844```python845spam = __import__('spam', globals(), locals(), [], 0)846```847848Инструкция `import spam.ham` приводит к следующему вызову:849850```python851spam = __import__('spam.ham', globals(), locals(), [], 0)852```853854Обратите внимание, как [`__import__()`](https://python-all.ru/3.3/library/functions.html#__import__) здесь возвращает модуль верхнего уровня, потому что это объект, который связывается с именем инструкцией [`import`](https://python-all.ru/3.3/reference/simple_stmts.html#import).855856С другой стороны, оператор `from spam.ham import eggs, sausage as saus` приводит к857858```python859_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0)860eggs = _temp.eggs861saus = _temp.sausage862```863864Здесь модуль `spam.ham` возвращается из [`__import__()`](https://python-all.ru/3.3/library/functions.html#__import__). Из этого объекта извлекаются импортируемые имена и присваиваются соответствующим именам.865866Если нужно просто импортировать модуль (возможно, внутри пакета) по имени, используйте [`importlib.import_module()`](https://python-all.ru/3.3/library/importlib.html#importlib.import_module).867868Изменено в версии 3.3: Отрицательные значения *level* больше не поддерживаются (это также меняет значение по умолчанию на 0).869870Сноски871872| [\[1\]](https://python-all.ru/3.3/library/functions.html#id1) | Обратите внимание, что анализатор принимает только соглашение о концах строк в стиле Unix. Если вы читаете код из файла, убедитесь, что используете режим преобразования символов новой строки для преобразования концов строк в стиле Windows или Mac. |873| --- | --- |874