functions.md
1> **Источник:** https://python-all.ru/2.7/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/2.7/library/functions.html#abs) | [`divmod()`](https://python-all.ru/2.7/library/functions.html#divmod) | [`input()`](https://python-all.ru/2.7/library/functions.html#input) | [`open()`](https://python-all.ru/2.7/library/functions.html#open) | [`staticmethod()`](https://python-all.ru/2.7/library/functions.html#staticmethod) |14| [`all()`](https://python-all.ru/2.7/library/functions.html#all) | [`enumerate()`](https://python-all.ru/2.7/library/functions.html#enumerate) | [`int()`](https://python-all.ru/2.7/library/functions.html#int) | [`ord()`](https://python-all.ru/2.7/library/functions.html#ord) | [`str()`](https://python-all.ru/2.7/library/functions.html#str) |15| [`any()`](https://python-all.ru/2.7/library/functions.html#any) | [`eval()`](https://python-all.ru/2.7/library/functions.html#eval) | [`isinstance()`](https://python-all.ru/2.7/library/functions.html#isinstance) | [`pow()`](https://python-all.ru/2.7/library/functions.html#pow) | [`sum()`](https://python-all.ru/2.7/library/functions.html#sum) |16| [`basestring()`](https://python-all.ru/2.7/library/functions.html#basestring) | [`execfile()`](https://python-all.ru/2.7/library/functions.html#execfile) | [`issubclass()`](https://python-all.ru/2.7/library/functions.html#issubclass) | [`print()`](https://python-all.ru/2.7/library/functions.html#print) | [`super()`](https://python-all.ru/2.7/library/functions.html#super) |17| [`bin()`](https://python-all.ru/2.7/library/functions.html#bin) | [`file()`](https://python-all.ru/2.7/library/functions.html#file) | [`iter()`](https://python-all.ru/2.7/library/functions.html#iter) | [`property()`](https://python-all.ru/2.7/library/functions.html#property) | [`tuple()`](https://python-all.ru/2.7/library/functions.html#tuple) |18| [`bool()`](https://python-all.ru/2.7/library/functions.html#bool) | [`filter()`](https://python-all.ru/2.7/library/functions.html#filter) | [`len()`](https://python-all.ru/2.7/library/functions.html#len) | [`range()`](https://python-all.ru/2.7/library/functions.html#range) | [`type()`](https://python-all.ru/2.7/library/functions.html#type) |19| [`bytearray()`](https://python-all.ru/2.7/library/functions.html#bytearray) | [`float()`](https://python-all.ru/2.7/library/functions.html#float) | [`list()`](https://python-all.ru/2.7/library/functions.html#func-list) | [`raw_input()`](https://python-all.ru/2.7/library/functions.html#raw_input) | [`unichr()`](https://python-all.ru/2.7/library/functions.html#unichr) |20| [`callable()`](https://python-all.ru/2.7/library/functions.html#callable) | [`format()`](https://python-all.ru/2.7/library/functions.html#format) | [`locals()`](https://python-all.ru/2.7/library/functions.html#locals) | [`reduce()`](https://python-all.ru/2.7/library/functions.html#reduce) | [`unicode()`](https://python-all.ru/2.7/library/functions.html#unicode) |21| [`chr()`](https://python-all.ru/2.7/library/functions.html#chr) | [`frozenset()`](https://python-all.ru/2.7/library/functions.html#func-frozenset) | [`long()`](https://python-all.ru/2.7/library/functions.html#long) | [`reload()`](https://python-all.ru/2.7/library/functions.html#reload) | [`vars()`](https://python-all.ru/2.7/library/functions.html#vars) |22| [`classmethod()`](https://python-all.ru/2.7/library/functions.html#classmethod) | [`getattr()`](https://python-all.ru/2.7/library/functions.html#getattr) | [`map()`](https://python-all.ru/2.7/library/functions.html#map) | [`repr()`](https://python-all.ru/2.7/library/functions.html#func-repr) | [`xrange()`](https://python-all.ru/2.7/library/functions.html#xrange) |23| [`cmp()`](https://python-all.ru/2.7/library/functions.html#cmp) | [`globals()`](https://python-all.ru/2.7/library/functions.html#globals) | [`max()`](https://python-all.ru/2.7/library/functions.html#max) | [`reversed()`](https://python-all.ru/2.7/library/functions.html#reversed) | [`zip()`](https://python-all.ru/2.7/library/functions.html#zip) |24| [`compile()`](https://python-all.ru/2.7/library/functions.html#compile) | [`hasattr()`](https://python-all.ru/2.7/library/functions.html#hasattr) | [`memoryview()`](https://python-all.ru/2.7/library/functions.html#func-memoryview) | [`round()`](https://python-all.ru/2.7/library/functions.html#round) | [`__import__()`](https://python-all.ru/2.7/library/functions.html#__import__) |25| [`complex()`](https://python-all.ru/2.7/library/functions.html#complex) | [`hash()`](https://python-all.ru/2.7/library/functions.html#hash) | [`min()`](https://python-all.ru/2.7/library/functions.html#min) | [`set()`](https://python-all.ru/2.7/library/functions.html#func-set) | |26| [`delattr()`](https://python-all.ru/2.7/library/functions.html#delattr) | [`help()`](https://python-all.ru/2.7/library/functions.html#help) | [`next()`](https://python-all.ru/2.7/library/functions.html#next) | [`setattr()`](https://python-all.ru/2.7/library/functions.html#setattr) | |27| [`dict()`](https://python-all.ru/2.7/library/functions.html#func-dict) | [`hex()`](https://python-all.ru/2.7/library/functions.html#hex) | [`object()`](https://python-all.ru/2.7/library/functions.html#object) | [`slice()`](https://python-all.ru/2.7/library/functions.html#slice) | |28| [`dir()`](https://python-all.ru/2.7/library/functions.html#dir) | [`id()`](https://python-all.ru/2.7/library/functions.html#id) | [`oct()`](https://python-all.ru/2.7/library/functions.html#oct) | [`sorted()`](https://python-all.ru/2.7/library/functions.html#sorted) | |2930Кроме того, есть ещё четыре встроенные функции, которые больше не считаются необходимыми: [`apply()`](https://python-all.ru/2.7/library/functions.html#apply), [`buffer()`](https://python-all.ru/2.7/library/functions.html#buffer), [`coerce()`](https://python-all.ru/2.7/library/functions.html#coerce) и [`intern()`](https://python-all.ru/2.7/library/functions.html#intern). Они описаны в разделе [Необязательные встроенные функции](https://python-all.ru/2.7/library/functions.html#non-essential-built-in-funcs).3132#### `abs(x)`3334Возвращает абсолютное значение числа. Аргументом может быть обычное или длинное целое число или число с плавающей точкой. Если аргумент – комплексное число, возвращается его модуль.3536#### `all(iterable)`3738Возвращает `True`, если все элементы *iterable* истинны (или если iterable пуст). Эквивалентно:3940```python41def all(iterable):42 for element in iterable:43 if not element:44 return False45 return True46```4748Новое в версии 2.5.4950#### `any(iterable)`5152Возвращает `True`, если хотя бы один элемент *iterable* истинен. Если iterable пуст, возвращает `False`. Эквивалентно:5354```python55def any(iterable):56 for element in iterable:57 if element:58 return True59 return False60```6162Новое в версии 2.5.6364#### `basestring()`6566Этот абстрактный тип является суперклассом для [`str`](https://python-all.ru/2.7/library/functions.html#str) и [`unicode`](https://python-all.ru/2.7/library/functions.html#unicode). Его нельзя вызвать или создать экземпляр, но его можно использовать для проверки, является ли объект экземпляром [`str`](https://python-all.ru/2.7/library/functions.html#str) или [`unicode`](https://python-all.ru/2.7/library/functions.html#unicode). `isinstance(obj, basestring)` эквивалентен `isinstance(obj, (str, unicode))`.6768Новое в версии 2.3.6970#### `bin(x)`7172Преобразует целое число в двоичную строку. Результат – корректное выражение Python. Если *x* не является объектом [`int`](https://python-all.ru/2.7/library/functions.html#int) Python, он должен определять метод [`__index__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__index__), возвращающий целое число.7374Новое в версии 2.6.7576#### `class bool([x])`7778Возвращает логическое значение, то есть `True` или `False`. *x* преобразуется с использованием стандартной процедуры проверки истинности. Если *x* ложно или опущено, возвращается [`False`](https://python-all.ru/2.7/library/constants.html#False); в противном случае возвращается [`True`](https://python-all.ru/2.7/library/constants.html#True). [`bool`](https://python-all.ru/2.7/library/functions.html#bool) также является классом, который является подклассом [`int`](https://python-all.ru/2.7/library/functions.html#int). Класс [`bool`](https://python-all.ru/2.7/library/functions.html#bool) не может быть унаследован. Его единственные экземпляры – [`False`](https://python-all.ru/2.7/library/constants.html#False) и [`True`](https://python-all.ru/2.7/library/constants.html#True).7980Новое в версии 2.2.1.8182Изменено в версии 2.3: Если аргумент не указан, эта функция возвращает [`False`](https://python-all.ru/2.7/library/constants.html#False).8384#### `class bytearray([source[, encoding[, errors]]])`8586Возвращает новый массив байтов. Класс [`bytearray`](https://python-all.ru/2.7/library/functions.html#bytearray) – это изменяемая последовательность целых чисел в диапазоне 0 \<= x \< 256. Он имеет большинство обычных методов изменяемых последовательностей, описанных в [Изменяемые типы последовательностей](https://python-all.ru/2.7/library/stdtypes.html#typesseq-mutable), а также большинство методов, которые есть у типа [`str`](https://python-all.ru/2.7/library/functions.html#str), см. [Строковые методы](https://python-all.ru/2.7/library/stdtypes.html#string-methods).8788Необязательный параметр *source* можно использовать для инициализации массива несколькими разными способами:8990- Если это *unicode*, необходимо также указать параметры *encoding* (и, опционально, *errors*); тогда [`bytearray()`](https://python-all.ru/2.7/library/functions.html#bytearray) преобразует строку Unicode в байты с помощью `unicode.encode()`.91- Если это *целое число*, массив будет иметь указанный размер и будет инициализирован нулевыми байтами.92- Если это объект, соответствующий интерфейсу *buffer*, то для инициализации массива bytes будет использоваться буфер этого объекта только для чтения.93- Если это *итерируемый объект*, он должен быть итерируемым объектом, содержащим целые числа в диапазоне `0 <= x < 256`, которые используются в качестве начального содержимого массива.9495Без аргументов создаётся массив размера 0.9697Новое в версии 2.6.9899#### `callable(object)`100101Возвращает [`True`](https://python-all.ru/2.7/library/constants.html#True), если аргумент *object* является вызываемым, и [`False`](https://python-all.ru/2.7/library/constants.html#False) в противном случае. Если возвращается истина, вызов всё ещё может завершиться ошибкой, но если возвращается ложь, вызов *object* никогда не удастся. Обратите внимание, что классы вызываемы (вызов класса возвращает новый экземпляр); экземпляры класса вызываемы, если у них есть метод [`__call__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__call__).102103#### `chr(i)`104105Возвращает строку из одного символа, код ASCII которого равен целому числу *i*. Например, `chr(97)` возвращает строку `'a'`. Это обратная функция к [`ord()`](https://python-all.ru/2.7/library/functions.html#ord). Аргумент должен находиться в диапазоне \[0..255\] включительно; если *i* выходит за пределы этого диапазона, возбуждается [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError). См. также [`unichr()`](https://python-all.ru/2.7/library/functions.html#unichr).106107#### `classmethod(function)`108109Возвращает метод класса для *функции*.110111Метод класса получает класс в качестве неявного первого аргумента, точно так же, как метод экземпляра получает экземпляр. Чтобы объявить метод класса, используйте эту идиому:112113```python114class C(object):115 @classmethod116 def f(cls, arg1, arg2, ...):117 ...118```119120Форма `@classmethod` является функцией [декоратора](https://python-all.ru/2.7/glossary.html#term-decorator) – подробнее см. в [Function definitions](https://python-all.ru/2.7/reference/compound_stmts.html#function).121122Метод класса можно вызывать как через класс (например, `C.f()`), так и через экземпляр (например, `C().f()`). Экземпляр при этом игнорируется, учитывается только его класс. Если метод класса вызывается для производного класса, в качестве подразумеваемого первого аргумента передаётся объект производного класса.123124Методы класса отличаются от статических методов C++ или Java. Если нужны именно они, см. [`staticmethod()`](https://python-all.ru/2.7/library/functions.html#staticmethod).125126Для получения дополнительной информации о методах класса см. [Стандартная иерархия типов](https://python-all.ru/2.7/reference/datamodel.html#types).127128Новое в версии 2.2.129130Изменено в версии 2.4: Добавлен синтаксис декораторов функций.131132#### `cmp(x, y)`133134Сравнивает два объекта *x* и *y* и возвращает целое число в зависимости от результата. Возвращаемое значение отрицательно, если `x < y`, равно нулю, если `x == y`, и строго положительно, если `x > y`.135136#### `compile(source, filename, mode[, flags[, dont_inherit]])`137138Компилирует *source* в объект кода или AST. Объекты кода могут быть выполнены с помощью инструкции [`exec`](https://python-all.ru/2.7/reference/simple_stmts.html#exec) или вычислены вызовом [`eval()`](https://python-all.ru/2.7/library/functions.html#eval). *source* может быть строкой Unicode, строкой, закодированной в *Latin-1*, или объектом AST. Обратитесь к документации модуля [`ast`](https://python-all.ru/2.7/library/ast.html#module-ast) для получения информации о работе с объектами AST.139140Аргумент *filename* должен указывать файл, из которого был прочитан код; если код был прочитан не из файла, следует передать какое-либо узнаваемое значение (обычно используется `'<string>'`).141142Аргумент *mode* определяет, какой код следует компилировать; он может быть равен `'exec'`, если *source* состоит из последовательности инструкций, `'eval'`, если из одного выражения, или `'single'`, если из одной интерактивной инструкции (в последнем случае будут выведены выражения, которые вычисляются в значение, отличное от `None`).143144Необязательные аргументы *flags* и *dont\_inherit* управляют тем, какие операторы future (см. [**PEP 236**](https://python-all.ru/2.7/library/functions.html)) влияют на компиляцию *source*. Если ни один из них не указан (или оба равны нулю), код компилируется с теми операторами future, которые действуют в коде, вызывающем [`compile()`](https://python-all.ru/2.7/library/functions.html#compile). Если аргумент *flags* задан, а *dont\_inherit* – нет (или равен нулю), то операторы future, указанные аргументом *flags*, добавляются к тем, которые использовались бы в любом случае. Если *dont\_inherit* – ненулевое целое число, то используется только аргумент *flags* – операторы future, действующие вокруг вызова compile, игнорируются.145146Операторы future задаются битами, которые можно объединять побитовым ИЛИ для указания нескольких операторов. Битовое поле, необходимое для указания конкретной возможности, можно найти как атрибут `compiler_flag` в экземпляре `_Feature` в модуле [`__future__`](https://python-all.ru/2.7/library/__future__.html#module-__future__).147148Эта функция возбуждает [`SyntaxError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.SyntaxError), если скомпилированный исходный код некорректен, и [`TypeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.TypeError), если исходный код содержит нулевые байты.149150Если требуется разобрать код Python в его AST-представление, см. [`ast.parse()`](https://python-all.ru/2.7/library/ast.html#ast.parse).151152> **Примечание**153>154> При компиляции строки с многострочным кодом в режиме `'single'` или `'eval'` входные данные должны завершаться как минимум одним символом новой строки. Это необходимо для облегчения определения незавершённых и завершённых инструкций в модуле [`code`](https://python-all.ru/2.7/library/code.html#module-code).155156> **Предупреждение**157>158> Можно привести к аварийному завершению интерпретатора Python с помощью достаточно длинной/сложной строки при компиляции в объект AST из-за ограничений глубины стека в компиляторе AST Python.159160Изменено в версии 2.3: Добавлены аргументы *flags* и *dont\_inherit*.161162Изменено в версии 2.6: Добавлена поддержка компиляции объектов AST.163164Изменено в версии 2.7: Разрешено использование символов новой строки Windows и Mac. Кроме того, входные данные в режиме `'exec'` больше не должны заканчиваться символом новой строки.165166#### `class complex([real[, imag]])`167168Возвращает комплексное число со значением *real* + *imag*\*1j или преобразует строку или число в комплексное число. Если первый параметр является строкой, он интерпретируется как комплексное число, и функция должна вызываться без второго параметра. Второй параметр никогда не может быть строкой. Каждый аргумент может быть любого числового типа (включая комплексный). Если *imag* опущен, он по умолчанию равен нулю, и функция служит как функция преобразования чисел, например [`int()`](https://python-all.ru/2.7/library/functions.html#int), [`long()`](https://python-all.ru/2.7/library/functions.html#long) и [`float()`](https://python-all.ru/2.7/library/functions.html#float). Если оба аргумента опущены, возвращает `0j`.169170> **Примечание**171>172> При преобразовании из строки вокруг центрального оператора `+` или `-` не должно быть пробелов. Например, `complex('1+2j')` корректно, а `complex('1 + 2j')` вызывает [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError).173174Тип complex описан в [Числовые типы – int, float, long, complex](https://python-all.ru/2.7/library/stdtypes.html#typesnumeric).175176#### `delattr(object, name)`177178Это родственная функция для [`setattr()`](https://python-all.ru/2.7/library/functions.html#setattr). Аргументами являются объект и строка. Строка должна быть именем одного из атрибутов объекта. Функция удаляет указанный атрибут, если объект это позволяет. Например, `delattr(x, 'foobar')` эквивалентно `del x.foobar`.179180#### `class dict(**kwarg)`181182#### `class dict(mapping, **kwarg)`183184#### `class dict(iterable, **kwarg)`185186Создаёт новый словарь. Объект [`dict`](https://python-all.ru/2.7/library/stdtypes.html#dict) – это класс словаря. Документацию по этому классу см. в [`dict`](https://python-all.ru/2.7/library/stdtypes.html#dict) и [Типы отображений – dict](https://python-all.ru/2.7/library/stdtypes.html#typesmapping).187188О других контейнерах см. встроенные классы `list`, [`set`](https://python-all.ru/2.7/library/stdtypes.html#set) и [`tuple`](https://python-all.ru/2.7/library/functions.html#tuple), а также модуль [`collections`](https://python-all.ru/2.7/library/collections.html#module-collections).189190#### `dir([object])`191192Без аргументов возвращает список имён в текущей локальной области видимости. Если передан аргумент, пытается вернуть список допустимых атрибутов этого объекта.193194Если у объекта есть метод с именем `__dir__()`, этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, реализующим собственную функцию [`__getattr__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__getattr__) или [`__getattribute__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__getattribute__), настраивать способ, которым [`dir()`](https://python-all.ru/2.7/library/functions.html#dir) сообщает их атрибуты.195196Если объект не предоставляет `__dir__()`, функция старается собрать информацию из атрибута [`__dict__`](https://python-all.ru/2.7/library/stdtypes.html#object.__dict__) объекта, если он определён, и из объекта его типа. Полученный список не обязательно полный и может быть неточным, если объект имеет пользовательский [`__getattr__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__getattr__).197198Механизм [`dir()`](https://python-all.ru/2.7/library/functions.html#dir) по умолчанию ведёт себя по-разному для разных типов объектов, поскольку он пытается выдать наиболее релевантную, а не полную информацию:199200- Если объект является модулем, список содержит имена атрибутов этого модуля.201- Если объект является типом или классом, список содержит имена его атрибутов, а также (рекурсивно) атрибутов его базовых классов.202- В остальных случаях список содержит имена атрибутов объекта, имена атрибутов его класса и (рекурсивно) атрибутов базовых классов его класса.203204Полученный список сортируется по алфавиту. Например:205206```python207>>> import struct208>>> dir() # показать имена в пространстве имён модуля209['__builtins__', '__doc__', '__name__', 'struct']210>>> dir(struct) # показать имена в модуле struct211['Struct', '__builtins__', '__doc__', '__file__', '__name__',212 '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',213 'unpack', 'unpack_from']214>>> class Shape(object):215 def __dir__(self):216 return ['area', 'perimeter', 'location']217>>> s = Shape()218>>> dir(s)219['area', 'perimeter', 'location']220```221222> **Примечание**223>224> Поскольку [`dir()`](https://python-all.ru/2.7/library/functions.html#dir) предоставляется в первую очередь для удобства использования в интерактивной подсказке, он старается предоставить интересный набор имен, а не строго или последовательно определенный набор, и его подробное поведение может меняться в разных версиях. Например, атрибуты метакласса не входят в результирующий список, если аргументом является класс.225226#### `divmod(a, b)`227228Принимает два (не комплексных) числа в качестве аргументов и возвращает пару чисел, состоящую из их частного и остатка при делении в столбик. При смешанных типах операндов применяются правила бинарных арифметических операторов. Для обычных и длинных целых чисел результат такой же, как `(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)`.229230Изменено в версии 2.3: Использование [`divmod()`](https://python-all.ru/2.7/library/functions.html#divmod) с комплексными числами устарело.231232#### `enumerate(sequence, start=0)`233234Возвращает объект enumerate. *sequence* должна быть последовательностью, [итератором](https://python-all.ru/2.7/glossary.html#term-iterator) или другим объектом, поддерживающим итерацию. Метод `next()` итератора, возвращаемого [`enumerate()`](https://python-all.ru/2.7/library/functions.html#enumerate), возвращает кортеж, содержащий счетчик (от *start*, который по умолчанию равен 0) и значения, полученные при итерации по *sequence*:235236```python237>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']238>>> list(enumerate(seasons))239[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]240>>> list(enumerate(seasons, start=1))241[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]242```243244Эквивалентно следующему:245246```python247def enumerate(sequence, start=0):248 n = start249 for elem in sequence:250 yield n, elem251 n += 1252```253254Новое в версии 2.3.255256Изменено в версии 2.6: Был добавлен параметр *start*.257258#### `eval(expression[, globals[, locals]])`259260Аргументами являются строка в кодировке Unicode или *Latin-1* и необязательные глобальные и локальные переменные. Если указан, *globals* должен быть словарём. Если указан, *locals* может быть любым отображающим объектом.261262Изменено в версии 2.4: ранее *locals* должен был быть словарём.263264Аргумент *expression* разбирается и вычисляется как выражение Python (технически говоря, список условий) с использованием словарей *globals* и *locals* в качестве глобального и локального пространств имён. Если словарь *globals* присутствует, но в нём нет '\_\_builtins\_\_', текущие глобальные переменные копируются в *globals* перед разбором *expression*. Это означает, что *expression* обычно имеет полный доступ к стандартному модулю [`__builtin__`](https://python-all.ru/2.7/library/__builtin__.html#module-__builtin__), и ограниченные окружения распространяются. Если словарь *locals* опущен, по умолчанию используется словарь *globals*. Если опущены оба словаря, выражение выполняется в окружении, где вызывается [`eval()`](https://python-all.ru/2.7/library/functions.html#eval). Возвращаемое значение – результат вычисленного выражения. Синтаксические ошибки сообщаются как исключения. Пример:265266```python267>>> x = 1268>>> print eval('x+1')2692270```271272Эту функцию также можно использовать для выполнения произвольных объектов кода (например, созданных с помощью [`compile()`](https://python-all.ru/2.7/library/functions.html#compile)). В этом случае вместо строки передаётся объект кода. Если объект кода был скомпилирован с `'exec'` в качестве аргумента *mode*, то возвращаемое значение [`eval()`](https://python-all.ru/2.7/library/functions.html#eval) будет `None`.273274Подсказки: динамическое выполнение инструкций поддерживается оператором [`exec`](https://python-all.ru/2.7/reference/simple_stmts.html#exec). Выполнение инструкций из файла поддерживается функцией [`execfile()`](https://python-all.ru/2.7/library/functions.html#execfile). Функции [`globals()`](https://python-all.ru/2.7/library/functions.html#globals) и [`locals()`](https://python-all.ru/2.7/library/functions.html#locals) возвращают текущие словари глобальных и локальных переменных соответственно, что может быть полезно для передачи в функции [`eval()`](https://python-all.ru/2.7/library/functions.html#eval) или [`execfile()`](https://python-all.ru/2.7/library/functions.html#execfile).275276См. [`ast.literal_eval()`](https://python-all.ru/2.7/library/ast.html#ast.literal_eval): функция, которая может безопасно вычислять строки с выражениями, содержащими только литералы.277278#### `execfile(filename[, globals[, locals]])`279280Эта функция аналогична оператору [`exec`](https://python-all.ru/2.7/reference/simple_stmts.html#exec), но анализирует файл, а не строку. Она отличается от оператора [`import`](https://python-all.ru/2.7/reference/simple_stmts.html#import) тем, что не использует управление модулями – она читает файл безусловно и не создаёт новый модуль. [1](https://python-all.ru/2.7/library/functions.html#id3)281282Аргументами являются имя файла и два необязательных словаря. Файл анализируется и выполняется как последовательность инструкций Python (аналогично модулю) с использованием словарей *globals* и *locals* в качестве глобального и локального пространства имён. Если указан, *locals* может быть любым отображением. Помните, что на уровне модуля globals и locals – один и тот же словарь. Если в качестве *globals* и *locals* передаются два разных объекта, код будет выполняться так, как если бы он был встроен в определение класса.283284Изменено в версии 2.4: ранее *locals* должен был быть словарём.285286Если словарь *locals* опущен, по умолчанию используется словарь *globals*. Если оба словаря опущены, выражение выполняется в окружении, где вызывается [`execfile()`](https://python-all.ru/2.7/library/functions.html#execfile). Возвращаемое значение – `None`.287288> **Примечание**289>290> Словарь *locals* по умолчанию ведёт себя так, как описано для функции [`locals()`](https://python-all.ru/2.7/library/functions.html#locals) ниже: не следует пытаться изменять словарь *locals* по умолчанию. Передайте явный словарь *locals*, если нужно увидеть влияние кода на *locals* после возврата из функции [`execfile()`](https://python-all.ru/2.7/library/functions.html#execfile). [`execfile()`](https://python-all.ru/2.7/library/functions.html#execfile) нельзя надёжно использовать для изменения локальных переменных функции.291292#### `file(name[, mode[, buffering]])`293294Функция-конструктор для типа [`file`](https://python-all.ru/2.7/library/functions.html#file), описанного далее в разделе [Файловые объекты](https://python-all.ru/2.7/library/stdtypes.html#bltin-file-objects). Аргументы конструктора совпадают с аргументами встроенной функции [`open()`](https://python-all.ru/2.7/library/functions.html#open), описанной ниже.295296При открытии файла предпочтительнее использовать [`open()`](https://python-all.ru/2.7/library/functions.html#open) вместо непосредственного вызова этого конструктора. [`file`](https://python-all.ru/2.7/library/functions.html#file) больше подходит для проверки типа (например, при написании `isinstance(f, file)`).297298Новое в версии 2.2.299300#### `filter(function, iterable)`301302Строит список из тех элементов *iterable*, для которых *function* возвращает истину. *iterable* может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если *iterable* – строка или кортеж, результат также будет того же типа; в противном случае это всегда список. Если *function* равно `None`, используется тождественная функция, то есть удаляются все ложные элементы *iterable*.303304Обратите внимание, что `filter(function, iterable)` эквивалентно `[item for item in iterable if function(item)]`, если function не равно `None`, и `[item for item in iterable if item]`, если function равно `None`.305306См. [`itertools.ifilter()`](https://python-all.ru/2.7/library/itertools.html#itertools.ifilter) и [`itertools.ifilterfalse()`](https://python-all.ru/2.7/library/itertools.html#itertools.ifilterfalse) для итераторных версий этой функции, включая вариант, который отбирает элементы, для которых *function* возвращает ложь.307308#### `class float([x])`309310Возвращает число с плавающей запятой, построенное из числа или строки *x*.311312Если аргумент – строка, она должна содержать, возможно, знаковое десятичное целое или число с плавающей точкой, возможно, окружённое пробелами. Аргументом также может быть \[+|-\]nan или \[+|-\]inf. В противном случае аргументом может быть обычное или длинное целое или число с плавающей точкой, и возвращается число с плавающей точкой с тем же значением (в пределах точности Python). Если аргумент не указан, возвращается `0.0`.313314> **Примечание**315>316> При передаче строки могут возвращаться значения NaN и Infinity в зависимости от используемой библиотеки C. Float принимает строки nan, inf и -inf для NaN и положительной или отрицательной бесконечности. Регистр и ведущий + игнорируются, а для NaN игнорируется также ведущий -. Float всегда представляет NaN и бесконечность как nan, inf или -inf.317318Тип float описан в [Числовые типы – int, float, long, complex](https://python-all.ru/2.7/library/stdtypes.html#typesnumeric).319320#### `format(value[, format_spec])`321322Преобразует *значение* в «форматированное» представление, управляемое *спецификацией формата*. Интерпретация *спецификации формата* зависит от типа аргумента *значение*, однако существует стандартный синтаксис форматирования, используемый большинством встроенных типов: [Мини-язык спецификации формата](https://python-all.ru/2.7/library/string.html#formatspec).323324> **Примечание**325>326> `format(value, format_spec)` просто вызывает `value.__format__(format_spec)`.327328Новое в версии 2.6.329330#### `class frozenset([iterable])`331332Возвращает новый объект [`frozenset`](https://python-all.ru/2.7/library/stdtypes.html#frozenset), опционально с элементами, взятыми из *итерируемого объекта*. `frozenset` – это встроенный класс. См. [`frozenset`](https://python-all.ru/2.7/library/stdtypes.html#frozenset) и [Типы множеств – set, frozenset](https://python-all.ru/2.7/library/stdtypes.html#types-set) для документации об этом классе.333334Для других контейнеров см. встроенные классы [`set`](https://python-all.ru/2.7/library/stdtypes.html#set), `list`, [`tuple`](https://python-all.ru/2.7/library/functions.html#tuple) и [`dict`](https://python-all.ru/2.7/library/stdtypes.html#dict), а также модуль [`collections`](https://python-all.ru/2.7/library/collections.html#module-collections).335336Новое в версии 2.4.337338#### `getattr(object, name[, default])`339340Возвращает значение именованного атрибута объекта *object*. *name* должен быть строкой. Если эта строка является именем одного из атрибутов объекта, результатом будет значение этого атрибута. Например, `getattr(x, 'foobar')` эквивалентно `x.foobar`. Если именованный атрибут не существует, возвращается *значение по умолчанию*, если оно предоставлено, в противном случае возбуждается [`AttributeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.AttributeError).341342#### `globals()`343344Возвращает словарь, представляющий текущую таблицу глобальных символов. Это всегда словарь текущего модуля (внутри функции или метода это модуль, где она определена, а не модуль, из которого она вызывается).345346#### `hasattr(object, name)`347348Аргументы – объект и строка. Результат – `True`, если строка является именем одного из атрибутов объекта, и `False` в противном случае. (Это реализовано вызовом `getattr(object, name)` и проверкой, вызывает ли он исключение.)349350#### `hash(object)`351352Возвращает хеш-значение объекта (если оно есть). Хеш-значения являются целыми числами. Они используются для быстрого сравнения ключей словаря при поиске в словаре. Числовые значения, которые сравниваются как равные, имеют одинаковое хеш-значение (даже если они разных типов, как в случае 1 и 1.0).353354#### `help([object])`355356Запускает встроенную справочную систему. (Эта функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная справочная система запускается на консоли интерпретатора. Если аргумент – строка, то она ищется как имя модуля, функции, класса, метода, ключевого слова или темы документации, и на консоль выводится страница справки. Если аргумент – объект любого другого типа, генерируется страница справки по этому объекту.357358Эта функция добавляется во встроенное пространство имен модулем [`site`](https://python-all.ru/2.7/library/site.html#module-site).359360Новое в версии 2.2.361362#### `hex(x)`363364Преобразует целое число (любого размера) в шестнадцатеричную строку в нижнем регистре с префиксом «0x», например:365366```python367>>> hex(255)368'0xff'369>>> hex(-42)370'-0x2a'371>>> hex(1L)372'0x1L'373```374375Если x не является объектом [`int`](https://python-all.ru/2.7/library/functions.html#int) или [`long`](https://python-all.ru/2.7/library/functions.html#long) Python, он должен определять метод \_\_hex\_\_(), возвращающий строку.376377См. также [`int()`](https://python-all.ru/2.7/library/functions.html#int) для преобразования шестнадцатеричной строки в целое число с основанием 16.378379> **Примечание**380>381> Чтобы получить шестнадцатеричное строковое представление числа с плавающей точкой, используйте метод [`float.hex()`](https://python-all.ru/2.7/library/stdtypes.html#float.hex).382383Изменено в версии 2.4: Ранее возвращал только беззнаковый литерал.384385#### `id(object)`386387Возвращает «идентификатор» объекта. Это целое число (или длинное целое), которое гарантированно уникально и постоянно для данного объекта на протяжении его жизни. Два объекта с непересекающимся временем жизни могут иметь одинаковое значение [`id()`](https://python-all.ru/2.7/library/functions.html#id).388389**Особенность реализации CPython:** Это адрес объекта в памяти.390391#### `input([prompt])`392393Эквивалентно `eval(raw_input(prompt))`.394395Эта функция не перехватывает ошибки пользователя. Если входные данные синтаксически некорректны, будет возбуждено исключение [`SyntaxError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.SyntaxError). Другие исключения могут быть возбуждены, если произошла ошибка во время вычисления.396397Если модуль [`readline`](https://python-all.ru/2.7/library/readline.html#module-readline) был загружен, то [`input()`](https://python-all.ru/2.7/library/functions.html#input) будет использовать его для предоставления расширенных возможностей редактирования строк и истории.398399Рекомендуется использовать функцию [`raw_input()`](https://python-all.ru/2.7/library/functions.html#raw_input) для общего ввода от пользователей.400401#### `class int(x=0)`402403#### `class int(x, base=10)`404405Возвращает целое число, построенное из числа или строки *x*, или возвращает `0`, если аргументы не указаны. Если *x* – число, это может быть обычное целое, длинное целое или число с плавающей точкой. Если *x* – число с плавающей точкой, преобразование усекается в сторону нуля. Если аргумент выходит за диапазон целых чисел, функция вместо этого возвращает длинное целое.406407Если *x* не является числом или указан *base*, то *x* должен быть строкой или объектом Unicode, представляющим [целочисленный литерал](https://python-all.ru/2.7/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`/`0` или `0x`/`0X`, как и целочисленные литералы в коде. Основание 0 означает, что строка интерпретируется как целочисленный литерал, то есть фактическое основание равно 2, 8, 10 или 16.408409Тип int описан в [Числовые типы – int, float, long, complex](https://python-all.ru/2.7/library/stdtypes.html#typesnumeric).410411#### `isinstance(object, classinfo)`412413Возвращает истину, если аргумент *object* является экземпляром аргумента *classinfo* или его (прямого, косвенного или [виртуального](https://python-all.ru/2.7/glossary.html#term-abstract-base-class)) подкласса. Также возвращает истину, если *classinfo* является объектом-типом (классом нового стиля), а *object* – объектом этого типа или его (прямого, косвенного или [виртуального](https://python-all.ru/2.7/glossary.html#term-abstract-base-class)) подкласса. Если *object* не является экземпляром класса или объектом указанного типа, функция всегда возвращает ложь. Если *classinfo* – кортеж из объектов-классов или типов (или рекурсивно других таких кортежей), возвращает истину, если *object* является экземпляром любого из классов или типов. Если *classinfo* не является классом, типом или кортежем из классов, типов и таких кортежей, возбуждается исключение [`TypeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.TypeError).414415Изменено в версии 2.2: Добавлена поддержка кортежа информации о типах.416417#### `issubclass(class, classinfo)`418419Возвращает истину, если *class* является подклассом (прямым, косвенным или [виртуальным](https://python-all.ru/2.7/glossary.html#term-abstract-base-class)) *classinfo*. Класс считается подклассом самого себя. *classinfo* может быть кортежем объектов классов, и в этом случае проверяется каждый элемент *classinfo*. В любом другом случае возбуждается исключение [`TypeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.TypeError).420421Изменено в версии 2.3: Добавлена поддержка кортежа информации о типах.422423#### `iter(o[, sentinel])`424425Возвращает объект [итератора](https://python-all.ru/2.7/glossary.html#term-iterator). Первый аргумент интерпретируется совсем по-разному в зависимости от наличия второго аргумента. Без второго аргумента *o* должен быть объектом коллекции, поддерживающим протокол итерации (метод [`__iter__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__iter__)), или он должен поддерживать протокол последовательности (метод [`__getitem__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__getitem__) с целочисленными аргументами, начиная с `0`). Если он не поддерживает ни один из этих протоколов, возбуждается [`TypeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.TypeError). Если передан второй аргумент *sentinel*, то *o* должен быть вызываемым объектом. В этом случае созданный итератор будет вызывать *o* без аргументов при каждом обращении к своему методу [`next()`](https://python-all.ru/2.7/library/stdtypes.html#iterator.next); если возвращённое значение равно *sentinel*, будет возбуждено исключение [`StopIteration`](https://python-all.ru/2.7/library/exceptions.html#exceptions.StopIteration), в противном случае значение будет возвращено.426427Одно из полезных применений второй формы [`iter()`](https://python-all.ru/2.7/library/functions.html#iter) – чтение строк файла до тех пор, пока не будет достигнута определённая строка. В следующем примере файл читается до тех пор, пока метод [`readline()`](https://python-all.ru/2.7/library/io.html#io.TextIOBase.readline) не вернёт пустую строку:428429```python430with open('mydata.txt') as fp:431 for line in iter(fp.readline, ''):432 process_line(line)433```434435Новое в версии 2.2.436437#### `len(s)`438439Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (например, строка, байты, кортеж, список или диапазон) или коллекция (например, словарь, множество или замороженное множество).440441#### `class list([iterable])`442443Возвращает список, элементы которого те же и в том же порядке, что и элементы *iterable*. *iterable* может быть последовательностью, контейнером, поддерживающим итерацию, или объектом итератора. Если *iterable* уже является списком, создаётся и возвращается его копия, аналогично `iterable[:]`. Например, `list('abc')` возвращает `['a', 'b', 'c']`, а `list( (1, 2, 3) )` возвращает `[1, 2, 3]`. Если аргумент не указан, возвращает новый пустой список `[]`.444445`list` – изменяемый тип последовательности, как описано в [Типы последовательностей – str, unicode, list, tuple, bytearray, buffer, xrange](https://python-all.ru/2.7/library/stdtypes.html#typesseq). Для других контейнеров см. встроенные классы [`dict`](https://python-all.ru/2.7/library/stdtypes.html#dict), [`set`](https://python-all.ru/2.7/library/stdtypes.html#set) и [`tuple`](https://python-all.ru/2.7/library/functions.html#tuple), а также модуль [`collections`](https://python-all.ru/2.7/library/collections.html#module-collections).446447#### `locals()`448449Обновляет и возвращает словарь, представляющий текущую таблицу локальных символов. Свободные переменные возвращаются [`locals()`](https://python-all.ru/2.7/library/functions.html#locals) при вызове в блоках функций, но не в блоках классов.450451> **Примечание**452>453> Содержимое этого словаря не следует изменять; изменения могут не повлиять на значения локальных и свободных переменных, используемых интерпретатором.454455#### `class long(x=0)`456457#### `class long(x, base=10)`458459Возвращает объект длинного целого, созданный из строки или числа *x*. Если аргумент – строка, она должна содержать возможно знаковое число произвольного размера, возможно с окружающими пробелами. Аргумент *base* интерпретируется так же, как для [`int()`](https://python-all.ru/2.7/library/functions.html#int), и может быть указан только когда *x* является строкой. В противном случае аргумент может быть обычным или длинным целым числом, или числом с плавающей точкой, и возвращается длинное целое с тем же значением. Преобразование чисел с плавающей точкой в целые выполняется с отбрасыванием дробной части (в сторону нуля). Если аргументы не указаны, возвращается `0L`.460461Тип long описан в разделе [Числовые типы – int, float, long, complex](https://python-all.ru/2.7/library/stdtypes.html#typesnumeric).462463#### `map(function, iterable, ...)`464465Применяет *function* к каждому элементу *iterable* и возвращает список результатов. Если переданы дополнительные аргументы *iterable*, то *function* должна принимать соответствующее количество аргументов и применяется к элементам из всех итерируемых объектов параллельно. Если один итерируемый объект короче другого, считается, что он расширен элементами `None`. Если *function* равна `None`, подразумевается тождественная функция; если аргументов несколько, [`map()`](https://python-all.ru/2.7/library/functions.html#map) возвращает список кортежей, содержащих соответствующие элементы из всех итерируемых объектов (своего рода операция транспонирования). Аргументы *iterable* могут быть последовательностью или любым итерируемым объектом; результат всегда список.466467#### `max(iterable[, key])`468469#### `max(arg1, arg2, *args[, key])`470471Возвращает наибольший элемент итерируемого объекта или наибольший из двух или более аргументов.472473Если передан один позиционный аргумент, *iterable* должен быть непустым итерируемым объектом (например, непустой строкой, кортежем или списком). Возвращается наибольший элемент в итерируемом объекте. Если передано два или более позиционных аргумента, возвращается наибольший из этих позиционных аргументов.474475Необязательный аргумент *key* задаёт одноаргументную функцию упорядочивания, подобную используемой для `list.sort()`. Аргумент *key*, если указан, должен быть передан в виде ключевого слова (например, `max(a,b,c,key=func)`).476477Изменено в версии 2.5: Добавлена поддержка необязательного аргумента *key*.478479#### `memoryview(obj)`480481Возвращает объект «memory view», созданный из переданного аргумента. Подробнее см. [тип memoryview](https://python-all.ru/2.7/library/stdtypes.html#typememoryview).482483#### `min(iterable[, key])`484485#### `min(arg1, arg2, *args[, key])`486487Возвращает наименьший элемент итерируемого объекта или наименьший из двух или более аргументов.488489Если указан один позиционный аргумент, *iterable* должен быть непустой итерабельной последовательностью (например, непустой строкой, кортежем или списком). Возвращается наименьший элемент из этой последовательности. Если указаны два или более позиционных аргумента, возвращается наименьший среди них.490491Необязательный аргумент *key* задаёт одноаргументную функцию упорядочивания, подобную используемой для `list.sort()`. Аргумент *key*, если указан, должен быть передан в виде ключевого слова (например, `min(a,b,c,key=func)`).492493Изменено в версии 2.5: Добавлена поддержка необязательного аргумента *key*.494495#### `next(iterator[, default])`496497Извлекает следующий элемент из *iterator* вызовом его метода [`next()`](https://python-all.ru/2.7/library/stdtypes.html#iterator.next). Если указан *default*, он возвращается в случае, если итератор исчерпан; в противном случае возбуждается [`StopIteration`](https://python-all.ru/2.7/library/exceptions.html#exceptions.StopIteration).498499Новое в версии 2.6.500501#### `class object`502503Возвращает новый объект без особенностей. [`object`](https://python-all.ru/2.7/library/functions.html#object) является базовым для всех классов нового стиля. Он имеет методы, общие для всех экземпляров классов нового стиля.504505Новое в версии 2.2.506507Изменено в версии 2.3: Эта функция не принимает никаких аргументов. Ранее она принимала аргументы, но игнорировала их.508509#### `oct(x)`510511Преобразует целое число (любого размера) в восьмеричную строку. Результат – корректное выражение Python.512513Изменено в версии 2.4: Ранее возвращал только беззнаковый литерал.514515#### `open(name[, mode[, buffering]])`516517Открывает файл, возвращая объект типа [`file`](https://python-all.ru/2.7/library/functions.html#file), описанного в разделе [Файловые объекты](https://python-all.ru/2.7/library/stdtypes.html#bltin-file-objects). Если файл не удаётся открыть, возбуждается [`IOError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.IOError). При открытии файла предпочтительнее использовать [`open()`](https://python-all.ru/2.7/library/functions.html#open) вместо прямого вызова конструктора [`file`](https://python-all.ru/2.7/library/functions.html#file).518519Первые два аргумента такие же, как для `stdio`'s `fopen()`: *name* – имя открываемого файла, а *mode* – строка, указывающая, как файл должен быть открыт.520521Наиболее часто используемые значения *mode*: `'r'` для чтения, `'w'` для записи (с усечением файла, если он уже существует), и `'a'` для добавления (что на *некоторых* системах Unix означает, что *все* записи добавляются в конец файла независимо от текущей позиции курсора). Если *mode* опущен, по умолчанию используется `'r'`. По умолчанию используется текстовый режим, который может преобразовывать символы `'\n'` в платформозависимое представление при записи и обратно при чтении. Поэтому при открытии двоичного файла следует добавить `'b'` к значению *mode*, чтобы открыть файл в двоичном режиме, что улучшит переносимость. (Добавление `'b'` полезно даже в системах, не различающих двоичные и текстовые файлы, где это служит документацией.) См. ниже дополнительные возможные значения *mode*.522523Необязательный аргумент *buffering* задаёт желаемый размер буфера файла: 0 означает без буферизации, 1 – построчная буферизация, любое другое положительное значение – использование буфера примерно такого размера (в байтах). Отрицательное значение *buffering* означает использование системных настроек по умолчанию, которые обычно дают построчную буферизацию для tty-устройств и полную буферизацию для других файлов. Если опущен, используется системное значение по умолчанию. [2](https://python-all.ru/2.7/library/functions.html#id4)524525Режимы `'r+'`, `'w+'` и `'a+'` открывают файл для обновления (чтения и записи); обратите внимание, что `'w+'` усекает файл. Добавьте `'b'` к режиму, чтобы открыть файл в двоичном режиме, в системах, различающих двоичные и текстовые файлы; в системах, не имеющих такого различия, добавление `'b'` не даёт эффекта.526527В дополнение к стандартным значениям `fopen()`, *mode* может быть `'U'` или `'rU'`. Python обычно собирается с поддержкой [универсальных символов новой строки](https://python-all.ru/2.7/glossary.html#term-universal-newlines); указание `'U'` открывает файл как текстовый, но строки могут завершаться любым из следующих символов: соглашение Unix `'\n'`, соглашение Macintosh `'\r'` или соглашение Windows `'\r\n'`. Все эти внешние представления воспринимаются программой Python как `'\n'`. Если Python собран без поддержки универсальных новых строк, режим *mode* с `'U'` эквивалентен обычному текстовому режиму. Обратите внимание, что файловые объекты, открытые таким образом, также имеют атрибут `newlines`, значение которого может быть `None` (если новые строки ещё не встречались), `'\n'`, `'\r'`, `'\r\n'` или кортеж, содержащий все встреченные типы новых строк.528529Python требует, чтобы режим, после удаления `'U'`, начинался с `'r'`, `'w'` или `'a'`.530531Python предоставляет множество модулей для работы с файлами, включая [`fileinput`](https://python-all.ru/2.7/library/fileinput.html#module-fileinput), [`os`](https://python-all.ru/2.7/library/os.html#module-os), [`os.path`](https://python-all.ru/2.7/library/os.path.html#module-os.path), [`tempfile`](https://python-all.ru/2.7/library/tempfile.html#module-tempfile) и [`shutil`](https://python-all.ru/2.7/library/shutil.html#module-shutil).532533Изменено в версии 2.5: Введено ограничение на первый символ строки режима.534535#### `ord(c)`536537Получая строку длиной в один символ, возвращает целое число, представляющее код Unicode точки символа, если аргумент – объект unicode, или значение байта, если аргумент – 8-битная строка. Например, `ord('a')` возвращает целое `97`, `ord(u'\u2020')` возвращает `8224`. Это обратная операция по отношению к [`chr()`](https://python-all.ru/2.7/library/functions.html#chr) для 8-битных строк и к [`unichr()`](https://python-all.ru/2.7/library/functions.html#unichr) для unicode-объектов. Если передан unicode-аргумент и Python был собран с UCS2 Unicode, то кодовая точка символа должна находиться в диапазоне \[0..65535\] включительно; в противном случае длина строки равна двум, и будет возбуждено [`TypeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.TypeError).538539#### `pow(x, y[, z])`540541Возвращает *x* в степени *y*; если указан *z*, возвращает *x* в степени *y* по модулю *z* (вычисляется эффективнее, чем `pow(x, y) % z`). Двухаргументная форма `pow(x, y)` эквивалентна использованию оператора возведения в степень: `x**y`.542543Аргументы должны иметь числовые типы. При смешанных типах операндов применяются правила приведения для бинарных арифметических операторов. Для операндов int и long int результат имеет тот же тип, что и операнды (после приведения), если второй аргумент не отрицателен; в этом случае все аргументы преобразуются в float и возвращается результат типа float. Например, `10**2` возвращает `100`, но `10**-2` возвращает `0.01`. (Последняя возможность добавлена в Python 2.2. В Python 2.1 и ранее, если оба аргумента были целочисленного типа, а второй аргумент – отрицателен, возбуждалось исключение.) Если второй аргумент отрицателен, третий аргумент должен быть опущен. Если присутствует *z*, то *x* и *y* должны быть целочисленного типа, а *y* – неотрицательным. (Это ограничение добавлено в Python 2.2. В Python 2.1 и ранее трёхаргументная форма `pow()` с плавающей точкой возвращала результаты, зависящие от платформы, из-за ошибок округления чисел с плавающей точкой.)544545#### `print(*objects, sep=' ', end='\n', file=sys.stdout)`546547Выводит *objects* в поток *file*, разделяя их *sep* и завершая строкой *end*. *sep*, *end* и *file*, если они присутствуют, должны передаваться как именованные аргументы.548549Все неименованные аргументы преобразуются в строки, как [`str()`](https://python-all.ru/2.7/library/functions.html#str), и записываются в поток, разделённые *sep* и завершаемые *end*. Оба *sep* и *end* должны быть строками; они также могут быть `None`, что означает использование значений по умолчанию. Если *objects* не указаны, [`print()`](https://python-all.ru/2.7/library/functions.html#print) просто запишет *end*.550551Аргумент *file* должен быть объектом с методом `write(string)`; если он отсутствует или равен `None`, будет использоваться [`sys.stdout`](https://python-all.ru/2.7/library/sys.html#sys.stdout). Буферизация вывода определяется *file*. Используйте `file.flush()`, чтобы гарантировать, например, немедленное появление на экране.552553> **Примечание**554>555> Эта функция обычно недоступна как встроенная, поскольку имя `print` распознаётся как оператор [`print`](https://python-all.ru/2.7/reference/simple_stmts.html#print). Чтобы отключить этот оператор и использовать функцию [`print()`](https://python-all.ru/2.7/library/functions.html#print), добавьте следующую инструкцию future в начало модуля:556>557> ```python558> from __future__ import print_function559> ```560561Новое в версии 2.6.562563#### `class property([fget[, fset[, fdel[, doc]]]])`564565Возвращает атрибут property для [классов нового стиля](https://python-all.ru/2.7/glossary.html#term-new-style-class) (классов, которые наследуются от [`object`](https://python-all.ru/2.7/library/functions.html#object)).566567*fget* – функция для получения значения атрибута. *fset* – функция для установки значения атрибута. *fdel* – функция для удаления значения атрибута. А *doc* создаёт строку документации для атрибута.568569Типичное использование – определить управляемый атрибут `x`:570571```python572class C(object):573 def __init__(self):574 self._x = None575576 def getx(self):577 return self._x578579 def setx(self, value):580 self._x = value581582 def delx(self):583 del self._x584585 x = property(getx, setx, delx, "I'm the 'x' property.")586```587588Если *c* – экземпляр *C*, то `c.x` вызовет геттер, `c.x = value` вызовет сеттер, а `del c.x` – делитер.589590Если указан, *doc* будет строкой документации атрибута property. В противном случае property скопирует строку документации *fget* (если она существует). Это позволяет легко создавать свойства только для чтения, используя [`property()`](https://python-all.ru/2.7/library/functions.html#property) в качестве [декоратора](https://python-all.ru/2.7/glossary.html#term-decorator):591592```python593class Parrot(object):594 def __init__(self):595 self._voltage = 100000596597 @property598 def voltage(self):599 """Получить текущее напряжение."""600 return self._voltage601```602603Декоратор `@property` превращает метод `voltage()` в «геттер» для атрибута только для чтения с тем же именем и устанавливает строку документации для *voltage* в «Get the current voltage.»604605Объект property имеет методы `getter`, `setter` и `deleter`, которые можно использовать как декораторы; они создают копию свойства с соответствующей функцией доступа, установленной в декорированную функцию. Лучше всего это объяснить на примере:606607```python608class C(object):609 def __init__(self):610 self._x = None611612 @property613 def x(self):614 """Я – свойство 'x'."""615 return self._x616617 @x.setter618 def x(self, value):619 self._x = value620621 @x.deleter622 def x(self):623 del self._x624```625626Этот код полностью эквивалентен первому примеру. Убедитесь, что дополнительные функции имеют то же имя, что и исходное свойство (`x` в данном случае.)627628Возвращаемый объект property также имеет атрибуты `fget`, `fset` и `fdel`, соответствующие аргументам конструктора.629630Новое в версии 2.2.631632Изменено в версии 2.5: Используется docstring *fget*, если *doc* не задан.633634Изменено в версии 2.6: Добавлены атрибуты `getter`, `setter` и `deleter`.635636#### `range(stop)`637638#### `range(start, stop[, step])`639640Это универсальная функция для создания списков, содержащих арифметические прогрессии. Чаще всего она используется в циклах [`for`](https://python-all.ru/2.7/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/2.7/library/exceptions.html#exceptions.ValueError)). Пример:641642```python643>>> range(10)644[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]645>>> range(1, 11)646[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]647>>> range(0, 30, 5)648[0, 5, 10, 15, 20, 25]649>>> range(0, 10, 3)650[0, 3, 6, 9]651>>> range(0, -10, -1)652[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]653>>> range(0)654[]655>>> range(1, 0)656[]657```658659#### `raw_input([prompt])`660661Если аргумент *prompt* присутствует, он выводится в стандартный вывод без завершающего перевода строки. Затем функция читает строку из ввода, преобразует её в строку (удаляя завершающий перевод строки) и возвращает её. Когда достигается конец файла (EOF), возбуждается [`EOFError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.EOFError). Пример:662663```python664>>> s = raw_input('--> ')665--> Monty Python's Flying Circus666>>> s667"Monty Python's Flying Circus"668```669670Если модуль [`readline`](https://python-all.ru/2.7/library/readline.html#module-readline) загружен, то [`raw_input()`](https://python-all.ru/2.7/library/functions.html#raw_input) будет использовать его для обеспечения расширенных возможностей редактирования строк и работы с историей.671672#### `reduce(function, iterable[, initializer])`673674Применяет функцию *function* от двух аргументов последовательно к элементам *iterable* слева направо, сводя итерируемый объект к одному значению. Например, `reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])` вычисляет `((((1+2)+3)+4)+5)`. Левый аргумент *x* – накопленное значение, а правый аргумент *y* – очередное значение из *iterable*. Если передан необязательный *initializer*, он помещается перед элементами итерируемого объекта в вычислениях и служит значением по умолчанию, когда итерируемый объект пуст. Если *initializer* не задан, а *iterable* содержит только один элемент, возвращается первый элемент. Примерная реализация:675676```python677def reduce(function, iterable, initializer=None):678 it = iter(iterable)679 if initializer is None:680 try:681 initializer = next(it)682 except StopIteration:683 raise TypeError('reduce() of empty sequence with no initial value')684 accum_value = initializer685 for x in it:686 accum_value = function(accum_value, x)687 return accum_value688```689690#### `reload(module)`691692Перезагружает ранее импортированный модуль *module*. Аргумент должен быть объектом модуля, то есть он должен быть успешно импортирован ранее. Это полезно, если вы отредактировали исходный файл модуля во внешнем редакторе и хотите опробовать новую версию, не выходя из интерпретатора Python. Возвращаемое значение – объект модуля (тот же, что и аргумент *module*).693694Когда выполняется `reload(module)`:695696- Код модулей Python перекомпилируется, и код уровня модуля выполняется заново, определяя новый набор объектов, которые привязываются к именам в словаре модуля. Функция `init` модулей расширения не вызывается второй раз.697- Как и в случае со всеми другими объектами в Python, старые объекты освобождаются только после того, как их счётчики ссылок упадут до нуля.698- Имена в пространстве имён модуля обновляются, чтобы указывать на любые новые или изменённые объекты.699- Другие ссылки на старые объекты (например, имена вне модуля) не перепривязываются для указания на новые объекты и должны быть обновлены в каждом пространстве имён, где они встречаются, если это необходимо.700701Существует ряд других предостережений:702703При перезагрузке модуля его словарь (содержащий глобальные переменные модуля) сохраняется. Переопределения имён заменяют старые определения, так что в целом это не проблема. Если новая версия модуля не определяет имя, которое было определено в старой версии, старое определение остаётся. Эта возможность может быть использована модулем с выгодой, если он поддерживает глобальную таблицу или кеш объектов – с помощью оператора [`try`](https://python-all.ru/2.7/reference/compound_stmts.html#try) он может проверить наличие таблицы и пропустить её инициализацию при необходимости:704705```python706try:707 cache708except NameError:709 cache = {}710```711712Перезагружать встроенные или динамически загружаемые модули обычно не очень полезно. Перезагрузка [`sys`](https://python-all.ru/2.7/library/sys.html#module-sys), [`__main__`](https://python-all.ru/2.7/library/__main__.html#module-__main__), `builtins` и других ключевых модулей не рекомендуется. Во многих случаях модули расширения не рассчитаны на инициализацию более одного раза и могут отказывать непредсказуемым образом при перезагрузке.713714Если модуль импортирует объекты из другого модуля с помощью [`from`](https://python-all.ru/2.7/reference/simple_stmts.html#from) … [`import`](https://python-all.ru/2.7/reference/simple_stmts.html#import) …, вызов [`reload()`](https://python-all.ru/2.7/library/functions.html#reload) для другого модуля не переопределяет импортированные из него объекты – один из способов обойти это – повторно выполнить оператор [`from`](https://python-all.ru/2.7/reference/simple_stmts.html#from), другой – использовать [`import`](https://python-all.ru/2.7/reference/simple_stmts.html#import) и полные имена (*module*.\*name\*).715716Если модуль создаёт экземпляры класса, перезагрузка модуля, определяющего класс, не влияет на определения методов экземпляров – они продолжают использовать старое определение класса. То же самое верно для производных классов.717718#### `repr(object)`719720Возвращает строку, содержащую печатное представление объекта. Это то же значение, которое получается при преобразовании (обратные кавычки). Иногда бывает полезно иметь доступ к этой операции как к обычной функции. Для многих типов эта функция пытается вернуть строку, которая при передаче в [`eval()`](https://python-all.ru/2.7/library/functions.html#eval) даст объект с тем же значением; в противном случае представление представляет собой строку в угловых скобках, содержащую имя типа объекта вместе с дополнительной информацией, часто включающей имя и адрес объекта. Класс может управлять тем, что возвращает эта функция для своих экземпляров, определив метод [`__repr__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__repr__).721722#### `reversed(seq)`723724Возвращает обратный [итератор](https://python-all.ru/2.7/glossary.html#term-iterator). *seq* должен быть объектом с методом [`__reversed__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__reversed__) или поддерживающим протокол последовательности (методы [`__len__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__len__) и [`__getitem__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__getitem__) с целочисленными аргументами, начиная с `0`).725726Новое в версии 2.4.727728Изменено в версии 2.6: Добавлена возможность написания пользовательского метода [`__reversed__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__reversed__).729730#### `round(number[, ndigits])`731732Возвращает значение с плавающей точкой *number*, округлённое до *ndigits* знаков после десятичной точки. Если *ndigits* опущен, по умолчанию он равен нулю. Результат – число с плавающей точкой. Значения округляются до ближайшего кратного 10 в степени минус *ndigits*; если два кратных одинаково близки, округление производится в сторону от нуля (например, `round(0.5)` равно `1.0`, а `round(-0.5)` равно `-1.0`).733734> **Примечание**735>736> Поведение [`round()`](https://python-all.ru/2.7/library/functions.html#round) для чисел с плавающей точкой может быть неожиданным: например, `round(2.675, 2)` даёт `2.67` вместо ожидаемого `2.68`. Это не ошибка: это результат того, что большинство десятичных дробей невозможно точно представить в виде числа с плавающей точкой. Подробнее см. [Арифметика с плавающей точкой: проблемы и ограничения](https://python-all.ru/2.7/tutorial/floatingpoint.html#tut-fp-issues).737738#### `class set([iterable])`739740Возвращает новый объект [`set`](https://python-all.ru/2.7/library/stdtypes.html#set), опционально с элементами, взятыми из *итерируемого объекта*. `set` – это встроенный класс. См. [`set`](https://python-all.ru/2.7/library/stdtypes.html#set) и [Типы множеств – set, frozenset](https://python-all.ru/2.7/library/stdtypes.html#types-set) для документации об этом классе.741742Для других контейнеров см. встроенные классы [`frozenset`](https://python-all.ru/2.7/library/stdtypes.html#frozenset), `list`, [`tuple`](https://python-all.ru/2.7/library/functions.html#tuple) и [`dict`](https://python-all.ru/2.7/library/stdtypes.html#dict), а также модуль [`collections`](https://python-all.ru/2.7/library/collections.html#module-collections).743744Новое в версии 2.4.745746#### `setattr(object, name, value)`747748Это аналог [`getattr()`](https://python-all.ru/2.7/library/functions.html#getattr). Аргументами являются объект, строка и произвольное значение. Строка может задавать существующий или новый атрибут. Функция присваивает значение атрибуту, если объект это позволяет. Например, `setattr(x, 'foobar', 123)` эквивалентно `x.foobar = 123`.749750#### `class slice(stop)`751752#### `class slice(start, stop[, step])`753754Возвращает объект [slice](https://python-all.ru/2.7/glossary.html#term-slice), представляющий набор индексов, заданных `range(start, stop, step)`. Аргументы *start* и *step* по умолчанию равны `None`. Объекты slice имеют атрибуты только для чтения `start`, `stop` и `step`, которые просто возвращают значения аргументов (или значения по умолчанию). Они не имеют другой явной функциональности; однако они используются Numerical Python и другими сторонними расширениями. Объекты slice также создаются при использовании расширенного синтаксиса индексации. Например: `a[start:stop:step]` или `a[start:stop, i]`. См. [`itertools.islice()`](https://python-all.ru/2.7/library/itertools.html#itertools.islice) для альтернативной версии, возвращающей итератор.755756#### `sorted(iterable[, cmp[, key[, reverse]]])`757758Возвращает новый отсортированный список из элементов *итерируемого объекта*.759760Необязательные аргументы *cmp*, *key* и *reverse* имеют тот же смысл, что и для метода `list.sort()` (описанного в разделе [Mutable Sequence Types](https://python-all.ru/2.7/library/stdtypes.html#typesseq-mutable)).761762*cmp* задаёт пользовательскую функцию сравнения двух аргументов (элементов итерируемого объекта), которая должна возвращать отрицательное, нулевое или положительное число в зависимости от того, считается ли первый аргумент меньше, равным или больше второго: `cmp=lambda x,y: cmp(x.lower(), y.lower())`. Значение по умолчанию – `None`.763764*key* задает функцию одного аргумента, которая используется для извлечения ключа сравнения из каждого элемента списка: `key=str.lower`. Значение по умолчанию – `None` (сравнивать элементы напрямую).765766*reverse* – логическое значение. Если указано `True`, то элементы списка сортируются так, как если бы каждое сравнение было обратным.767768В целом, процессы преобразования *key* и *reverse* работают намного быстрее, чем указание эквивалентной функции *cmp*. Это связано с тем, что *cmp* вызывается несколько раз для каждого элемента списка, тогда как *key* и *reverse* обращаются к каждому элементу только один раз. Используйте [`functools.cmp_to_key()`](https://python-all.ru/2.7/library/functools.html#functools.cmp_to_key) для преобразования старой функции *cmp* в функцию *key*.769770Встроенная функция [`sorted()`](https://python-all.ru/2.7/library/functions.html#sorted) гарантированно устойчива. Сортировка называется устойчивой, если она не меняет относительный порядок элементов, которые сравниваются как равные. Это удобно при многоуровневой сортировке (например, сначала по отделу, затем по зарплатной категории).771772Примеры сортировки и краткое руководство см. в [Sorting HOW TO](https://python-all.ru/2.7/howto/sorting.html#sortinghowto).773774Новое в версии 2.4.775776#### `staticmethod(function)`777778Возвращает статический метод для *функции*.779780Статический метод не получает неявный первый аргумент. Чтобы объявить статический метод, используйте такую идиому:781782```python783class C(object):784 @staticmethod785 def f(arg1, arg2, ...):786 ...787```788789Форма `@staticmethod` является функцией [декоратора](https://python-all.ru/2.7/glossary.html#term-decorator) – подробнее см. в [Function definitions](https://python-all.ru/2.7/reference/compound_stmts.html#function).790791Статический метод можно вызвать как от класса (например, `C.f()`), так и от экземпляра (например, `C().f()`).792793Статические методы в Python аналогичны статическим методам в Java или C++. Также смотрите [`classmethod()`](https://python-all.ru/2.7/library/functions.html#classmethod) – вариант, полезный для создания альтернативных конструкторов класса.794795Дополнительную информацию о статических методах см. в [The standard type hierarchy](https://python-all.ru/2.7/reference/datamodel.html#types).796797Новое в версии 2.2.798799Изменено в версии 2.4: Добавлен синтаксис декораторов функций.800801#### `class str(object='')`802803Возвращает строку, содержащую аккуратное печатное представление объекта. Для строк возвращается сама строка. Отличие от `repr(object)` в том, что `str(object)` не всегда пытается вернуть строку, приемлемую для [`eval()`](https://python-all.ru/2.7/library/functions.html#eval); его цель – вернуть печатную строку. Если аргумент не указан, возвращается пустая строка `''`.804805Дополнительную информацию о строках см. в разделе [Sequence Types – str, unicode, list, tuple, bytearray, buffer, xrange](https://python-all.ru/2.7/library/stdtypes.html#typesseq), который описывает функциональность последовательностей (строки являются последовательностями), а также методы, специфичные для строк, описанные в разделе [String Methods](https://python-all.ru/2.7/library/stdtypes.html#string-methods). Для вывода форматированных строк используйте строки шаблонов или оператор `%`, описанный в разделе [String Formatting Operations](https://python-all.ru/2.7/library/stdtypes.html#string-formatting). Кроме того, см. раздел [String Services](https://python-all.ru/2.7/library/strings.html#stringservices). См. также [`unicode()`](https://python-all.ru/2.7/library/functions.html#unicode).806807#### `sum(iterable[, start])`808809Суммирует *начальное значение* и элементы *итерируемого объекта* слева направо и возвращает итог. *Начальное значение* по умолчанию равно `0`. Элементы *итерируемого объекта* обычно являются числами, а начальное значение не может быть строкой.810811Для некоторых случаев существуют хорошие альтернативы [`sum()`](https://python-all.ru/2.7/library/functions.html#sum). Предпочтительный и быстрый способ конкатенации последовательности строк – вызов `''.join(sequence)`. Для сложения чисел с плавающей точкой с повышенной точностью см. [`math.fsum()`](https://python-all.ru/2.7/library/math.html#math.fsum). Для конкатенации последовательности итерируемых объектов рассмотрите [`itertools.chain()`](https://python-all.ru/2.7/library/itertools.html#itertools.chain).812813Новое в версии 2.3.814815#### `super(type[, object-or-type])`816817Возвращает прокси-объект, который делегирует вызовы методов родительскому или родственному классу *типа*. Это полезно для доступа к унаследованным методам, которые были переопределены в классе. Порядок поиска тот же, что используется [`getattr()`](https://python-all.ru/2.7/library/functions.html#getattr), за исключением того, что сам *тип* пропускается.818819Атрибут [`__mro__`](https://python-all.ru/2.7/library/stdtypes.html#class.__mro__) *типа* перечисляет порядок разрешения методов (MRO), используемый как [`getattr()`](https://python-all.ru/2.7/library/functions.html#getattr), так и [`super()`](https://python-all.ru/2.7/library/functions.html#super). Этот атрибут является динамическим и может изменяться при обновлении иерархии наследования.820821Если второй аргумент опущен, возвращается несвязанный объект super. Если второй аргумент является объектом, `isinstance(obj, type)` должно быть истинно. Если второй аргумент является типом, `issubclass(type2, type)` должно быть истинно (это полезно для методов класса).822823> **Примечание**824>825> [`super()`](https://python-all.ru/2.7/library/functions.html#super) работает только для [классов нового стиля](https://python-all.ru/2.7/glossary.html#term-new-style-class).826827Существует два типичных варианта использования *super*. В иерархии классов с одиночным наследованием *super* можно использовать для ссылки на родительские классы без явного указания их имен, что делает код более поддерживаемым. Это использование тесно параллельно использованию *super* в других языках программирования.828829Второй вариант использования – поддержка кооперативного множественного наследования в динамической среде выполнения. Этот вариант уникален для Python и не встречается в статически компилируемых языках или языках, поддерживающих только одиночное наследование. Это позволяет реализовать «ромбовидные диаграммы», в которых несколько базовых классов реализуют один и тот же метод. Хороший дизайн требует, чтобы этот метод имел одинаковую сигнатуру вызова во всех случаях (поскольку порядок вызовов определяется во время выполнения, поскольку этот порядок адаптируется к изменениям в иерархии классов и поскольку этот порядок может включать родственные классы, неизвестные до выполнения).830831Для обоих вариантов использования типичный вызов родительского класса выглядит так:832833```python834class C(B):835 def method(self, arg):836 super(C, self).method(arg)837```838839Обратите внимание, что [`super()`](https://python-all.ru/2.7/library/functions.html#super) реализован как часть процесса связывания для явных точечных обращений к атрибутам, таких как `super().__getitem__(name)`. Это делается путём реализации собственного метода [`__getattribute__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__getattribute__) для поиска классов в предсказуемом порядке, поддерживающем кооперативное множественное наследование. Соответственно, [`super()`](https://python-all.ru/2.7/library/functions.html#super) не определён для неявных обращений с использованием инструкций или операторов, таких как `super()[name]`.840841Также обратите внимание, что [`super()`](https://python-all.ru/2.7/library/functions.html#super) не ограничивается использованием внутри методов. Форма с двумя аргументами точно задаёт аргументы и устанавливает соответствующие ссылки.842843Практические рекомендации по проектированию кооперативных классов с использованием [`super()`](https://python-all.ru/2.7/library/functions.html#super) см. в [руководстве по использованию super()](https://python-all.ru/2.7/library/functions.html).844845Новое в версии 2.2.846847#### `tuple([iterable])`848849Возвращает кортеж, элементы которого совпадают и находятся в том же порядке, что и элементы *итерируемого объекта*. *Итерируемый объект* может быть последовательностью, контейнером, поддерживающим итерацию, или объектом-итератором. Если *итерируемый объект* уже является кортежем, он возвращается без изменений. Например, `tuple('abc')` возвращает `('a', 'b', 'c')`, а `tuple([1, 2, 3])` возвращает `(1, 2, 3)`. Если аргумент не передан, возвращается новый пустой кортеж, `()`.850851[`tuple`](https://python-all.ru/2.7/library/functions.html#tuple) – неизменяемый тип последовательности, как описано в [Типы последовательностей – str, unicode, list, tuple, bytearray, buffer, xrange](https://python-all.ru/2.7/library/stdtypes.html#typesseq). Для других контейнеров см. встроенные классы [`dict`](https://python-all.ru/2.7/library/stdtypes.html#dict), `list` и [`set`](https://python-all.ru/2.7/library/stdtypes.html#set), а также модуль [`collections`](https://python-all.ru/2.7/library/collections.html#module-collections).852853#### `class type(object)`854855#### `class type(name, bases, dict)`856857С одним аргументом возвращает тип *объекта*. Возвращаемое значение – объект типа. Для проверки типа объекта рекомендуется встроенная функция [`isinstance()`](https://python-all.ru/2.7/library/functions.html#isinstance).858859С тремя аргументами возвращает новый объект типа. Это по сути динамическая форма оператора [`class`](https://python-all.ru/2.7/reference/compound_stmts.html#class). Строка *name* – имя класса и становится атрибутом [`__name__`](https://python-all.ru/2.7/library/stdtypes.html#definition.__name__); кортеж *bases* перечисляет базовые классы и становится атрибутом [`__bases__`](https://python-all.ru/2.7/library/stdtypes.html#class.__bases__); словарь *dict* является пространством имён, содержащим определения тела класса, и становится атрибутом [`__dict__`](https://python-all.ru/2.7/library/stdtypes.html#object.__dict__). Например, следующие два оператора создают идентичные объекты [`type`](https://python-all.ru/2.7/library/functions.html#type):860861```python862>>> class X(object):863... a = 1864...865>>> X = type('X', (object,), dict(a=1))866```867868Новое в версии 2.2.869870#### `unichr(i)`871872Возвращает строку Unicode из одного символа, код Unicode которого – целое число *i*. Например, `unichr(97)` возвращает строку `u'a'`. Это обратная операция для [`ord()`](https://python-all.ru/2.7/library/functions.html#ord) для строк Unicode. Допустимый диапазон аргумента зависит от конфигурации Python: это может быть UCS2 \[0..0xFFFF\] или UCS4 \[0..0x10FFFF\]. В противном случае возбуждается [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError). Для строк ASCII и 8-битных строк см. [`chr()`](https://python-all.ru/2.7/library/functions.html#chr).873874Новое в версии 2.0.875876#### `unicode(object='')`877878#### `unicode(object[, encoding[, errors]])`879880Возвращает строковое представление *объекта* в Unicode, используя один из следующих режимов:881882Если заданы *encoding* и/или *errors*, `unicode()` декодирует объект, который может быть 8-битной строкой или символьным буфером, используя кодек для *encoding*. Параметр *encoding* – строка, задающая имя кодировки; если кодировка неизвестна, возбуждается [`LookupError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.LookupError). Обработка ошибок производится в соответствии с *errors*; это определяет обработку символов, недопустимых во входной кодировке. Если *errors* равно `'strict'` (по умолчанию), при ошибках возбуждается [`ValueError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.ValueError), значение `'ignore'` вызывает игнорирование ошибок без предупреждения, а значение `'replace'` приводит к использованию официального заменяющего символа Unicode, `U+FFFD`, для замены входных символов, которые не могут быть декодированы. См. также модуль [`codecs`](https://python-all.ru/2.7/library/codecs.html#module-codecs).883884Если необязательные параметры не указаны, `unicode()` имитирует поведение `str()`, за исключением того, что возвращает строки Unicode вместо 8-битных строк. Точнее, если *object* – строка Unicode или подкласс, она возвращает эту строку Unicode без дополнительного декодирования.885886Для объектов, предоставляющих метод [`__unicode__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__unicode__), он вызывает этот метод без аргументов для создания строки Unicode. Для всех остальных объектов запрашивается 8-битная строковая версия или представление, а затем преобразуется в строку Unicode с использованием кодека для кодировки по умолчанию в режиме `'strict'`.887888Дополнительную информацию о строках Unicode см. в [Типы последовательностей – str, unicode, list, tuple, bytearray, buffer, xrange](https://python-all.ru/2.7/library/stdtypes.html#typesseq), где описана функциональность последовательностей (строки Unicode являются последовательностями), а также методы, специфичные для строк, описанные в разделе [Методы строк](https://python-all.ru/2.7/library/stdtypes.html#string-methods). Для форматированного вывода строк используйте строки шаблонов или оператор `%`, описанный в разделе [Операции форматирования строк](https://python-all.ru/2.7/library/stdtypes.html#string-formatting). Кроме того, см. раздел [Службы строк](https://python-all.ru/2.7/library/strings.html#stringservices). См. также [`str()`](https://python-all.ru/2.7/library/functions.html#str).889890Новое в версии 2.0.891892Изменено в версии 2.2: Добавлена поддержка [`__unicode__()`](https://python-all.ru/2.7/reference/datamodel.html#object.__unicode__).893894#### `vars([object])`895896Возвращает атрибут [`__dict__`](https://python-all.ru/2.7/library/stdtypes.html#object.__dict__) для модуля, класса, экземпляра или любого другого объекта с атрибутом [`__dict__`](https://python-all.ru/2.7/library/stdtypes.html#object.__dict__).897898Такие объекты, как модули и экземпляры, имеют изменяемый атрибут [`__dict__`](https://python-all.ru/2.7/library/stdtypes.html#object.__dict__); однако другие объекты могут иметь ограничения на запись для своих атрибутов [`__dict__`](https://python-all.ru/2.7/library/stdtypes.html#object.__dict__) (например, классы нового стиля используют dictproxy, чтобы предотвратить прямое обновление словаря).899900Без аргумента [`vars()`](https://python-all.ru/2.7/library/functions.html#vars) ведёт себя как [`locals()`](https://python-all.ru/2.7/library/functions.html#locals). Примечание: словарь locals полезен только для чтения, так как обновления словаря locals игнорируются.901902#### `xrange(stop)`903904#### `xrange(start, stop[, step])`905906Эта функция очень похожа на [`range()`](https://python-all.ru/2.7/library/functions.html#range), но возвращает [объект xrange](https://python-all.ru/2.7/library/stdtypes.html#typesseq-xrange) вместо списка. Это непрозрачный тип последовательности, который выдает те же значения, что и соответствующий список, не сохраняя их одновременно. Преимущество [`xrange()`](https://python-all.ru/2.7/library/functions.html#xrange) перед [`range()`](https://python-all.ru/2.7/library/functions.html#range) минимально (поскольку [`xrange()`](https://python-all.ru/2.7/library/functions.html#xrange) все равно создает значения при запросе), за исключением случаев, когда используется очень большой диапазон на машине с ограниченной памятью или когда элементы диапазона никогда не используются (например, когда цикл обычно завершается с помощью [`break`](https://python-all.ru/2.7/reference/simple_stmts.html#break)). Дополнительную информацию об объектах xrange см. в [Тип XRange](https://python-all.ru/2.7/library/stdtypes.html#typesseq-xrange) и [Типы последовательностей – str, unicode, list, tuple, bytearray, buffer, xrange](https://python-all.ru/2.7/library/stdtypes.html#typesseq).907908**Особенность реализации CPython:** [`xrange()`](https://python-all.ru/2.7/library/functions.html#xrange) задуман как простой и быстрый. Реализации могут накладывать ограничения для достижения этой цели. Реализация Python на C ограничивает все аргументы нативными длинными целыми C («короткие» целые Python), а также требует, чтобы количество элементов помещалось в нативное длинное целое C. Если требуется больший диапазон, можно создать альтернативную версию, используя модуль [`itertools`](https://python-all.ru/2.7/library/itertools.html#module-itertools): `islice(count(start, step), (stop-start+step-1+2*(step<0))//step)`.909910#### `zip([iterable, ...])`911912Эта функция возвращает список кортежей, где *i*-й кортеж содержит *i*-й элемент из каждой из последовательностей или итерируемых объектов-аргументов. Длина возвращаемого списка усекается до длины самой короткой последовательности аргументов. Если несколько аргументов имеют одинаковую длину, [`zip()`](https://python-all.ru/2.7/library/functions.html#zip) аналогичен [`map()`](https://python-all.ru/2.7/library/functions.html#map) с начальным аргументом `None`. С одним аргументом-последовательностью она возвращает список 1-кортежей. Без аргументов возвращает пустой список.913914Гарантируется порядок вычисления итерируемых объектов слева направо. Это позволяет использовать идиому для группировки ряда данных в группы длины n с помощью `zip(*[iter(s)]*n)`.915916[`zip()`](https://python-all.ru/2.7/library/functions.html#zip) в сочетании с оператором `*` можно использовать для распаковки списка:917918```python919>>> x = [1, 2, 3]920>>> y = [4, 5, 6]921>>> zipped = zip(x, y)922>>> zipped923[(1, 4), (2, 5), (3, 6)]924>>> x2, y2 = zip(*zipped)925>>> x == list(x2) and y == list(y2)926True927```928929Новое в версии 2.0.930931Изменено в версии 2.4: Ранее [`zip()`](https://python-all.ru/2.7/library/functions.html#zip) требовал как минимум один аргумент, и `zip()` возбуждал [`TypeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.TypeError) вместо возврата пустого списка.932933#### `__import__(name[, globals[, locals[, fromlist[, level]]]])`934935> **Примечание**936>937> Это продвинутая функция, которая не требуется в повседневном программировании на Python, в отличие от [`importlib.import_module()`](https://python-all.ru/2.7/library/importlib.html#importlib.import_module).938939Эта функция вызывается оператором [`import`](https://python-all.ru/2.7/reference/simple_stmts.html#import). Её можно заменить (импортировав модуль [`__builtin__`](https://python-all.ru/2.7/library/__builtin__.html#module-__builtin__) и присвоив `__builtin__.__import__`), чтобы изменить семантику оператора [`import`](https://python-all.ru/2.7/reference/simple_stmts.html#import), но в настоящее время обычно проще использовать перехватчики импорта (см. [**PEP 302**](https://python-all.ru/2.7/library/functions.html)). Прямое использование [`__import__()`](https://python-all.ru/2.7/library/functions.html#__import__) встречается редко, за исключением случаев, когда требуется импортировать модуль, имя которого известно только во время выполнения.940941Функция импортирует модуль *name*, потенциально используя переданные *globals* и *locals* для определения того, как интерпретировать имя в контексте пакета. *fromlist* задаёт имена объектов или подмодулей, которые должны быть импортированы из модуля, указанного в *name*. Стандартная реализация вообще не использует свой аргумент *locals*, а *globals* использует только для определения контекста пакета для оператора [`import`](https://python-all.ru/2.7/reference/simple_stmts.html#import).942943*level* определяет, использовать ли абсолютный или относительный импорт. По умолчанию `-1`, что означает, что будут предприняты попытки как абсолютного, так и относительного импорта. `0` означает выполнение только абсолютного импорта. Положительные значения *level* указывают количество родительских каталогов для поиска относительно каталога модуля, вызывающего [`__import__()`](https://python-all.ru/2.7/library/functions.html#__import__).944945Когда переменная *name* имеет вид `package.module`, обычно возвращается пакет верхнего уровня (имя до первой точки), а *не* модуль, названный *name*. Однако, если передан непустой аргумент *fromlist*, возвращается модуль, названный *name*.946947Например, оператор `import spam` приводит к байт-коду, напоминающему следующий код:948949```python950spam = __import__('spam', globals(), locals(), [], -1)951```952953Оператор `import spam.ham` приводит к следующему вызову:954955```python956spam = __import__('spam.ham', globals(), locals(), [], -1)957```958959Обратите внимание, как [`__import__()`](https://python-all.ru/2.7/library/functions.html#__import__) возвращает модуль верхнего уровня, потому что это объект, который привязывается к имени оператором [`import`](https://python-all.ru/2.7/reference/simple_stmts.html#import).960961С другой стороны, оператор `from spam.ham import eggs, sausage as saus` приводит к962963```python964_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], -1)965eggs = _temp.eggs966saus = _temp.sausage967```968969Здесь модуль `spam.ham` возвращается из [`__import__()`](https://python-all.ru/2.7/library/functions.html#__import__). Из этого объекта извлекаются имена для импорта и присваиваются соответствующим именам.970971Если требуется просто импортировать модуль (возможно, внутри пакета) по имени, используйте [`importlib.import_module()`](https://python-all.ru/2.7/library/importlib.html#importlib.import_module).972973Изменено в версии 2.5: Добавлен параметр level.974975Изменено в версии 2.5: Добавлена поддержка именованных аргументов для параметров.976977# 3. Необязательные встроенные функции978979Есть несколько встроенных функций, которые больше не являются обязательными для изучения, знакомства или использования в современном программировании на Python. Они сохранены здесь для поддержания обратной совместимости с программами, написанными для более старых версий Python.980981Программисты на Python, преподаватели, студенты и авторы книг могут свободно обходить эти функции, не беспокоясь о том, что упустят что-то важное.982983#### `apply(function, args[, keywords])`984985Аргумент *function* должен быть вызываемым объектом (пользовательской или встроенной функцией, методом или объектом класса), а аргумент *args* должен быть последовательностью. *function* вызывается с *args* в качестве списка аргументов; количество аргументов равно длине кортежа. Если присутствует необязательный аргумент *keywords*, он должен быть словарём, ключами которого являются строки. Он задаёт именованные аргументы, которые будут добавлены в конец списка аргументов. Вызов [`apply()`](https://python-all.ru/2.7/library/functions.html#apply) отличается от простого вызова `function(args)`, поскольку в последнем случае всегда ровно один аргумент. Использование [`apply()`](https://python-all.ru/2.7/library/functions.html#apply) эквивалентно `function(*args, **keywords)`.986987Устарело с версии 2.3: Используйте `function(*args, **keywords)` вместо `apply(function, args, keywords)` (см. [Распаковка списков аргументов](https://python-all.ru/2.7/tutorial/controlflow.html#tut-unpacking-arguments)).988989#### `buffer(object[, offset[, size]])`990991Аргумент *object* должен быть объектом, поддерживающим буферный интерфейс вызова (например, строки, массивы и буферы). Будет создан новый буферный объект, который ссылается на аргумент *object*. Буферный объект будет представлять собой срез от начала *object* (или от указанного *offset*). Срез будет простираться до конца *object* (или будет иметь длину, заданную аргументом *size*).992993#### `coerce(x, y)`994995Возвращает кортеж из двух числовых аргументов, приведённых к общему типу, с использованием тех же правил, что и в арифметических операциях. Если приведение невозможно, возбуждает [`TypeError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.TypeError).996997#### `intern(string)`998999Помещает *строку* в таблицу «интернированных» строк и возвращает интернированную строку – *строку* (ту же самую или копию). Интернирование строк полезно для небольшого повышения производительности поиска в словаре: если ключи в словаре интернированы и искомый ключ интернирован, сравнение ключей (после хеширования) может выполняться сравнением указателей, а не строк. Обычно имена, используемые в программах Python, автоматически интернируются, и словари, используемые для хранения атрибутов модулей, классов или экземпляров, имеют интернированные ключи.10001001Изменено в версии 2.3: Интернированные строки больше не являются бессмертными (как это было в Python 2.2 и ранее); для получения преимущества необходимо сохранять ссылку на возвращаемое значение [`intern()`](https://python-all.ru/2.7/library/functions.html#intern).10021003Сноски10041005**[1](https://python-all.ru/2.7/library/functions.html#id1)**10061007Он используется относительно редко, поэтому не стоит делать из него отдельный оператор.10081009**[2](https://python-all.ru/2.7/library/functions.html#id2)**10101011Указание размера буфера в настоящее время не действует на системах, не имеющих `setvbuf()`. Интерфейс для задания размера буфера не реализован с помощью метода, который вызывает `setvbuf()`, потому что это может привести к дампу ядра при вызове после выполнения любого ввода-вывода, и нет надёжного способа определить, так ли это.10121013**3**10141015В текущей реализации локальные привязки переменных обычно нельзя так изменить, но переменные, полученные из других областей видимости (например, из модулей), можно. Это может измениться.1016