Встроенные функции¶Built-in Functions
Интерпретатор Python включает ряд встроенных функций и типов, которые доступны всегда. Они перечислены здесь в алфавитном порядке.
Встроенные функции |
|||
|---|---|---|---|
- abs(x)¶
Возвращает абсолютное значение числа. Аргументом может быть целое число, число с плавающей запятой или объект, реализующий
__abs__(). Если аргумент – комплексное число, возвращается его модуль.
- aiter(async_iterable)¶
Возвращает асинхронный итератор для асинхронного итерируемого объекта. Эквивалентно вызову
x.__aiter__().Примечание: в отличие от
iter(),aiter()не имеет варианта с двумя аргументами.Добавлено в версии 3.10.
- all(iterable)¶
Возвращает
True, если все элементы iterable истинны (или если iterable пуст). Эквивалентно:def all(iterable): for element in iterable: if not element: return False return True
- awaitable anext(async_iterator)¶
- awaitable anext(async_iterator, default)
При ожидании возвращает следующий элемент из переданного асинхронного итератора или default, если он указан и итератор исчерпан.
Это асинхронный вариант встроенной функции
next(), который ведёт себя аналогично.Вызывает метод
__anext__()объекта async_iterator, возвращая ожидаемый объект. Ожидание этого объекта возвращает следующее значение итератора. Если задан default, он возвращается в случае исчерпания итератора, иначе возбуждаетсяStopAsyncIteration.Добавлено в версии 3.10.
- any(iterable)¶
Возвращает
True, если хотя бы один элемент iterable истинен. Если iterable пуст, возвращаетFalse. Эквивалентно:def any(iterable): for element in iterable: if element: return True return False
- ascii(object)¶
Как и
repr(), возвращает строку, содержащую печатное представление объекта, но экранирует не-ASCII символы в строке, возвращаемойrepr(), используя экранирование\x,\uили\U. Эта строка аналогична возвращаемой функциейrepr()в Python 2.
- bin(x)¶
Преобразует целое число в двоичную строку с префиксом «0b». Результат является корректным выражением Python. Если x не является объектом Python
int, он должен определять метод__index__(), возвращающий целое число. Несколько примеров:>>> bin(3) '0b11' >>> bin(-10) '-0b1010'
Если требуется префикс «0b» или нет, можно использовать один из следующих способов.
>>> format(14, '#b'), format(14, 'b') ('0b1110', '1110') >>> f'{14:#b}', f'{14:b}' ('0b1110', '1110')
См. также
format()для получения дополнительной информации.
- class bool(object=False, /)¶
Возвращает логическое значение, т.е. одно из
TrueилиFalse. Аргумент преобразуется с помощью стандартной процедуры проверки истинности. Если аргумент ложен или опущен, возвращаетсяFalse; в противном случае возвращаетсяTrue. Классboolявляется подклассомint(см. Числовые типы – int, float, complex). Он не может быть наследован далее. Его единственные экземпляры –FalseиTrue(см. Логический тип – bool).Изменено в версии 3.7: Теперь параметр позиционный.
- breakpoint(*args, **kws)¶
Эта функция запускает отладчик в месте вызова. А именно, она вызывает
sys.breakpointhook(), передаваяargsиkwsнапрямую. По умолчаниюsys.breakpointhook()вызываетpdb.set_trace()без аргументов. В этом случае это просто вспомогательная функция, чтобы не импортировать явноpdbили не набирать много кода для входа в отладчик. Однакоsys.breakpointhook()можно задать как другую функцию, иbreakpoint()будет автоматически вызывать её, позволяя войти в отладчик по выбору. Еслиsys.breakpointhook()недоступен, эта функция возбудитRuntimeError.По умолчанию поведение
breakpoint()можно изменить с помощью переменной окруженияPYTHONBREAKPOINT. См.sys.breakpointhook()для получения подробностей использования.Обратите внимание, что это не гарантируется, если
sys.breakpointhook()был заменён.Вызывает событие аудита
builtins.breakpointс аргументомbreakpointhook.Добавлено в версии 3.7.
- class bytearray(source=b'')
- class bytearray(source, encoding)
- class bytearray(source, encoding, errors)
Возвращает новый массив байтов. Класс
bytearrayпредставляет собой изменяемую последовательность целых чисел в диапазоне 0 <= x < 256. Он поддерживает большинство обычных методов изменяемых последовательностей, описанных в разделе Изменяемые типы последовательностей, а также большинство методов, которые есть у типаbytes(см. Операции с байтами и bytearray).Необязательный параметр source можно использовать для инициализации массива несколькими разными способами:
Если это строка, необходимо также указать параметры кодировка (и, опционально, ошибки); затем
bytearray()преобразует строку в байты с помощьюstr.encode().Если это целое число, массив будет иметь указанный размер и будет инициализирован нулевыми байтами.
Если это объект, соответствующий буферному интерфейсу, для инициализации массива байтов будет использоваться буфер только для чтения этого объекта.
Если это итерируемый объект, он должен быть итерируемым объектом, содержащим целые числа в диапазоне
0 <= x < 256, которые используются в качестве начального содержимого массива.
Без аргументов создаётся массив размера 0.
См. также Типы бинарных последовательностей – bytes, bytearray, memoryview и Объекты bytearray.
- class bytes(source=b'')
- class bytes(source, encoding)
- class bytes(source, encoding, errors)
Возвращает новый объект «bytes», который является неизменяемой последовательностью целых чисел в диапазоне
0 <= x < 256.bytes– это неизменяемая версияbytearray: он имеет те же методы, не изменяющие объект, и те же возможности индексации и взятия срезов.Соответственно, аргументы конструктора интерпретируются так же, как для
bytearray().Объекты bytes также можно создавать с помощью литералов, см. Литералы строк и bytes.
См. также Типы бинарных последовательностей – bytes, bytearray, memoryview, Объекты bytes и Операции с байтами и bytearray.
- callable(object)¶
Возвращает
True, если аргумент object является вызываемым, иFalseв противном случае. Если эта функция возвращаетTrue, вызов всё ещё может завершиться ошибкой, но если возвращаетсяFalse, вызвать object никогда не удастся. Обратите внимание, что классы вызываемы (вызов класса возвращает новый экземпляр); экземпляры вызываемы, если их класс имеет метод__call__().Добавлено в версии 3.2: Эта функция была впервые удалена в Python 3.0, а затем возвращена в Python 3.2.
- chr(i)¶
Возвращает строку, представляющую символ, кодовая точка Unicode которого равна целому числу i. Например,
chr(97)возвращает строку'a', аchr(8364)возвращает'€'. Это обратная операция кord().Допустимый диапазон аргумента – от 0 до 1 114 111 (0x10FFFF в шестнадцатеричной системе).
ValueErrorбудет возбуждено, если i выходит за этот диапазон.
- @classmethod¶
Преобразует метод в метод класса.
Метод класса получает класс в качестве неявного первого аргумента, точно так же, как метод экземпляра получает экземпляр. Чтобы объявить метод класса, используйте следующий идиоматический приём:
class C: @classmethod def f(cls, arg1, arg2): ...
Форма
@classmethodявляется функцией декоратора – подробнее см. в Function definitions.Метод класса можно вызывать как через класс (например,
C.f()), так и через экземпляр (например,C().f()). Экземпляр при этом игнорируется, учитывается только его класс. Если метод класса вызывается для производного класса, в качестве подразумеваемого первого аргумента передаётся объект производного класса.Методы классов отличаются от статических методов C++ или Java. Если нужны именно статические методы, см.
staticmethod()в этом разделе. Дополнительную информацию о методах классов можно найти в разделе Стандартная иерархия типов.Изменено в версии 3.9: Теперь методы классов могут оборачивать другие дескрипторы, например
property().Изменено в версии 3.10: Теперь методы классов наследуют атрибуты методов (
__module__,__name__,__qualname__,__doc__и__annotations__) и имеют новый атрибут__wrapped__.Изменено в версии 3.11: Методы класса больше не могут оборачивать другие дескрипторы, такие как
property().
- compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)¶
Компилирует source в объект кода или AST. Объекты кода могут выполняться с помощью
exec()илиeval(). source может быть обычной строкой, строкой байтов или объектом AST. Обратитесь к документации модуляastза информацией о работе с объектами AST.Аргумент filename должен указывать файл, из которого был прочитан код; если код был прочитан не из файла, следует передать какое-либо узнаваемое значение (обычно используется
'<string>').Аргумент mode определяет, какой код следует компилировать; он может быть равен
'exec', если source состоит из последовательности инструкций,'eval', если из одного выражения, или'single', если из одной интерактивной инструкции (в последнем случае будут выведены выражения, которые вычисляются в значение, отличное отNone).Необязательные аргументы flags и dont_inherit управляют тем, какие параметры компилятора следует активировать, а какие будущие возможности разрешить. Если ни один из них не указан (или оба равны нулю), код компилируется с теми же флагами, что и код, вызывающий
compile(). Если аргумент flags передан, а dont_inherit – нет (или равен нулю), то параметры компилятора и будущие инструкции, заданные аргументом flags, используются в дополнение к тем, которые использовались бы в любом случае. Если dont_inherit – ненулевое целое, то аргументом flags являются сами флаги – флаги (будущие возможности и параметры компилятора) в окружающем коде игнорируются.Параметры компилятора и будущие инструкции задаются битами, которые можно объединять побитовым ИЛИ, чтобы указать несколько параметров. Битовое поле, необходимое для указания конкретной будущей возможности, можно найти как атрибут
compiler_flagу экземпляра_Featureв модуле__future__. Флаги компилятора можно найти в модулеast, с префиксомPyCF_.Аргумент optimize задаёт уровень оптимизации компилятора; значение по умолчанию
-1выбирает уровень оптимизации интерпретатора, заданный опциями-O. Явные уровни:0(без оптимизации;__debug__истинно),1(утверждения удалены,__debug__ложно) или2(строки документации также удалены).Эта функция возбуждает
SyntaxError, если скомпилированный исходный код некорректен, иValueError, если исходный код содержит нулевые байты.Если требуется разобрать код Python в его AST-представление, см.
ast.parse().Возбуждает событие аудита
compileс аргументамиsourceиfilename. Это событие также может быть возбуждено при неявной компиляции.Примечание
При компиляции строки с многострочным кодом в режиме
'single'или'eval'входные данные должны завершаться как минимум одним символом новой строки. Это необходимо для облегчения определения незавершённых и завершённых инструкций в модулеcode.Предупреждение
Можно привести к аварийному завершению интерпретатора Python с помощью достаточно длинной/сложной строки при компиляции в объект AST из-за ограничений глубины стека в компиляторе AST Python.
Изменено в версии 3.2: Разрешено использование символов новой строки Windows и Mac. Кроме того, входные данные в режиме
'exec'больше не обязаны заканчиваться символом новой строки. Добавлен параметр optimize.Изменено в версии 3.5: Ранее возбуждалось исключение
TypeError, когда в source встречались нулевые байты.Добавлено в версии 3.8: Теперь
ast.PyCF_ALLOW_TOP_LEVEL_AWAITможно передавать в флагах для включения поддержки верхнеуровневыхawait,async forиasync with.
- class complex(number=0, /)¶
- class complex(string, /)
- class complex(real=0, imag=0)
Преобразует строку или число в комплексное число, или создаёт комплексное число из действительной и мнимой частей.
Примеры:
>>> complex('+1.23') (1.23+0j) >>> complex('-4.5j') -4.5j >>> complex('-1.23+4.5j') (-1.23+4.5j) >>> complex('\t( -1.23+4.5J )\n') (-1.23+4.5j) >>> complex('-Infinity+NaNj') (-inf+nanj) >>> complex(1.23) (1.23+0j) >>> complex(imag=-4.5) -4.5j >>> complex(-1.23, 4.5) (-1.23+4.5j)
Если аргумент – строка, она должна содержать либо действительную часть (в том же формате, что и для
float()), либо мнимую часть (в том же формате, но с суффиксом'j'или'J'), либо обе части (в этом случае знак мнимой части обязателен). Строка может быть необязательно окружена пробельными символами и круглыми скобками'('и')', которые игнорируются. Строка не должна содержать пробелов между'+','-', суффиксом'j'или'J'и десятичным числом. Например,complex('1+2j')подходит, аcomplex('1 + 2j')возбуждаетValueError. Более формально, входные данные должны соответствовать правилу грамматикиcomplexvalueпосле удаления скобок и начальных/конечных пробельных символов:complexvalue ::=
floatvalue|floatvalue("j" | "J") |floatvaluesignabsfloatvalue("j" | "J")Если аргумент – число, конструктор выполняет числовое преобразование, как
intиfloat. Для произвольного объекта Pythonx,complex(x)делегирует полномочияx.__complex__(). Если__complex__()не определён, то используется__float__(). Если__float__()не определён, то используется__index__().Если переданы два аргумента или используются именованные аргументы, каждый аргумент может быть любого числового типа (включая комплексный). Если оба аргумента – действительные числа, возвращается комплексное число с действительной компонентой real и мнимой компонентой imag. Если оба аргумента – комплексные числа, возвращается комплексное число с действительной компонентой
real.real-imag.imagи мнимой компонентойreal.imag+imag.real. Если один из аргументов – действительное число, в приведенных выражениях используется только его действительная часть.Если все аргументы опущены, возвращает
0j.Тип complex описан в разделе Числовые типы – int, float, complex.
Изменено в версии 3.6: Разрешена группировка цифр с помощью подчёркиваний, как в литералах кода.
Изменено в версии 3.8: Используется
__index__(), если__complex__()и__float__()не определены.
- delattr(object, name)¶
Эта функция является аналогом
setattr(). Аргументы – объект и строка. Строка должна быть именем одного из атрибутов объекта. Функция удаляет указанный атрибут, если объект это позволяет. Например,delattr(x, 'foobar')эквивалентноdel x.foobar. name не обязательно должен быть идентификатором Python (см.setattr()).
- class dict(**kwarg)
- class dict(mapping, **kwarg)
- class dict(iterable, **kwarg)
Создаёт новый словарь. Объект
dict– это класс словаря. Документацию по этому классу см. вdictи Типы отображений – dict.О других контейнерах см. встроенные классы
list,setиtuple, а также модульcollections.
- dir()¶
- dir(object)
Без аргументов возвращает список имён в текущей локальной области видимости. Если передан аргумент, пытается вернуть список допустимых атрибутов этого объекта.
Если у объекта есть метод с именем
__dir__(), этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, реализующим собственную функцию__getattr__()или__getattribute__(), настраивать способ, которымdir()сообщает их атрибуты.Если объект не предоставляет
__dir__(), функция старается собрать информацию из атрибута__dict__объекта, если он определён, и из объекта его типа. Результирующий список не обязательно полон и может быть неточным, если у объекта есть собственный__getattr__().Механизм
dir()по умолчанию ведёт себя по-разному для разных типов объектов, поскольку он пытается выдать наиболее релевантную, а не полную информацию:Если объект является модулем, список содержит имена атрибутов этого модуля.
Если объект является типом или классом, список содержит имена его атрибутов, а также (рекурсивно) атрибутов его базовых классов.
В остальных случаях список содержит имена атрибутов объекта, имена атрибутов его класса и (рекурсивно) атрибутов базовых классов его класса.
Полученный список сортируется по алфавиту. Например:
>>> import struct >>> dir() # показать имена в пространстве имён модуля ['__builtins__', '__name__', 'struct'] >>> dir(struct) # показать имена в модуле struct ['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from'] >>> class Shape: ... def __dir__(self): ... return ['area', 'perimeter', 'location'] ... >>> s = Shape() >>> dir(s) ['area', 'location', 'perimeter']
Примечание
Поскольку
dir()предоставляется в первую очередь для удобства использования в интерактивной оболочке, он старается выдать интересный набор имён скорее, чем строго или последовательно определённый, и его детальное поведение может меняться от версии к версии. Например, атрибуты метакласса не входят в результирующий список, когда аргументом является класс.
- divmod(a, b)¶
Принимает два (не комплексных) числа в качестве аргументов и возвращает пару чисел, состоящую из их частного и остатка при целочисленном делении. Для смешанных типов операндов применяются правила бинарных арифметических операторов. Для целых чисел результат совпадает с
(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).
- enumerate(iterable, start=0)¶
Возвращает объект enumerate. iterable должен быть последовательностью, итератором или другим объектом, поддерживающим итерацию. Метод
__next__()итератора, возвращаемогоenumerate(), возвращает кортеж, содержащий счётчик (начиная с start, который по умолчанию равен 0) и значения, полученные при итерации по iterable.>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
Эквивалентно следующему:
def enumerate(iterable, start=0): n = start for elem in iterable: yield n, elem n += 1
- eval(expression, globals=None, locals=None)¶
- Параметры:
expression (
str| объект кода) – Выражение Python.globals (
dict|None) – глобальное пространство имён (по умолчанию:None).locals (отображение |
None) – локальное пространство имён (по умолчанию:None).
- Возвращает:
Результат вычисленного выражения.
- Возбуждает:
Синтаксические ошибки сообщаются как исключения.
Предупреждение
Эта функция выполняет произвольный код. Вызов её с пользовательским вводом может привести к уязвимостям безопасности.
Аргумент expression разбирается и вычисляется как выражение Python (технически говоря, список условий) с использованием словарей globals и locals в качестве глобального и локального пространства имён. Если словарь globals присутствует и не содержит значение для ключа
__builtins__, то перед разбором expression под этот ключ вставляется ссылка на словарь встроенного модуляbuiltins. Таким образом можно контролировать, какие встроенные объекты доступны выполняемому коду, вставив собственный словарь__builtins__в globals перед передачей его вeval(). Если словарь locals опущен, он по умолчанию равен словарю globals. Если оба словаря опущены, выражение выполняется с globals и locals из окружения, в котором вызванаeval(). Обратите внимание: eval() не имеет доступа к вложенным областям видимости (нелокальным) в окружающем окружении.Пример:
>>> x = 1 >>> eval('x+1') 2
Эту функцию также можно использовать для выполнения произвольных объектов кода (например, созданных с помощью
compile()). В этом случае передаётся объект кода вместо строки. Если объект кода был скомпилирован с'exec'в качестве аргумента mode, возвращаемое значениеeval()будетNone.Подсказки: динамическое выполнение инструкций поддерживается функцией
exec(). Функцииglobals()иlocals()возвращают текущий глобальный и локальный словари соответственно, что может быть полезно для передачи их вeval()илиexec().Если исходный код является строкой, начальные и конечные пробелы и табуляции удаляются.
См.
ast.literal_eval(): функция, которая может безопасно вычислять строки с выражениями, содержащими только литералы.Вызывает событие аудита
execс объектом кода в качестве аргумента. Также могут возникать события компиляции кода.
- exec(object, globals=None, locals=None, /, *, closure=None)¶
Предупреждение
Эта функция выполняет произвольный код. Вызов её с пользовательским вводом может привести к уязвимостям безопасности.
Эта функция поддерживает динамическое выполнение кода Python. object должен быть строкой или объектом кода. Если это строка, она разбирается как набор инструкций Python, который затем выполняется (если не возникает синтаксическая ошибка). [1] Если это объект кода, он просто выполняется. В любом случае выполняемый код должен быть корректным как файловый ввод (см. раздел Файловый ввод в справочном руководстве). Имейте в виду, что инструкции
nonlocal,yieldиreturnне могут использоваться вне определений функций, даже в контексте кода, переданного функцииexec(). Возвращаемое значение –None.В любом случае, если необязательные части опущены, код выполняется в текущей области видимости. Если указан только globals, он должен быть словарём (а не подклассом словаря), который будет использоваться как для глобальных, так и для локальных переменных. Если заданы globals и locals, они используются соответственно для глобальных и локальных переменных. Если указан, locals может быть любым отображением. Помните, что на уровне модуля globals и locals – это один и тот же словарь.
Примечание
Большинству пользователей достаточно передать только аргумент globals и никогда locals. Если exec получает два отдельных объекта в качестве globals и locals, код будет выполняться так, как если бы он был встроен в определение класса.
Если словарь globals не содержит значение для ключа
__builtins__, под этот ключ вставляется ссылка на словарь встроенного модуляbuiltins. Таким образом можно контролировать, какие встроенные объекты доступны выполняемому коду, вставив собственный словарь__builtins__в globals перед передачей его вexec().Аргумент closure задаёт замыкание – кортеж cellvars. Он действителен только тогда, когда object является объектом кода, содержащим свободные переменные. Длина кортежа должна точно совпадать с количеством свободных переменных, на которые ссылается объект кода.
Вызывает событие аудита
execс объектом кода в качестве аргумента. Также могут возникать события компиляции кода.Примечание
Встроенные функции
globals()иlocals()возвращают текущий глобальный и локальный словарь соответственно, что может быть полезно для передачи в качестве второго и третьего аргумента вexec().Примечание
Словарь locals по умолчанию действует так, как описано для функции
locals()ниже: не следует пытаться изменять словарь locals по умолчанию. Передайте явный словарь locals, если нужно увидеть влияние кода на locals после возврата из функцииexec().Изменено в версии 3.11: Добавлен параметр closure.
- filter(function, iterable)¶
Строит итератор из тех элементов iterable, для которых function истинна. iterable может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если function равна
None, подразумевается тождественная функция, то есть удаляются все элементы iterable, которые являются ложными.Обратите внимание:
filter(function, iterable)эквивалентно генераторному выражению(item for item in iterable if function(item)), если function не равнаNone, и(item for item in iterable if item), если function равнаNone.См.
itertools.filterfalse()для дополнительной функции, которая возвращает элементы iterable, для которых function ложна.
- class float(number=0.0, /)¶
- class float(string, /)
Возвращает число с плавающей запятой, построенное из числа или строки.
Примеры:
>>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf
Если аргумент – строка, она должна содержать десятичное число, возможно, с ведущим знаком и пробелами. Допустимые знаки:
'+'или'-'; знак'+'не влияет на итоговое значение. Аргументом может быть также строка, представляющая NaN (не число), положительную или отрицательную бесконечность. Точнее, входные данные должны соответствовать правилу грамматикиfloatvalueпосле удаления ведущих и завершающих пробельных символов:sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" digit ::= <a Unicode decimal digit, i.e. characters in Unicode general category Nd> digitpart ::=
digit(["_"]digit)* number ::= [digitpart] "."digitpart|digitpart["."] exponent ::= ("e" | "E") [sign]digitpartfloatnumber ::=number[exponent] absfloatvalue ::=floatnumber|infinity|nanfloatvalue ::= [sign]absfloatvalueРегистр не важен: например, «inf», «Inf», «INFINITY» и «iNfINity» – все допустимые варианты написания положительной бесконечности.
В противном случае, если аргумент – целое число или число с плавающей запятой, возвращается число с плавающей запятой с тем же значением (в пределах точности Python). Если аргумент выходит за диапазон float в Python, вызывается
OverflowError.Для произвольного объекта Python
xфункцияfloat(x)делегирует выполнениеx.__float__(). Если__float__()не определён, используется__index__().Если аргумент не указан, возвращается
0.0.Тип float описан в разделе Числовые типы – int, float, complex.
Изменено в версии 3.6: Разрешена группировка цифр с помощью подчёркиваний, как в литералах кода.
Изменено в версии 3.7: Теперь параметр позиционный.
Изменено в версии 3.8: Использует
__index__(), если__float__()не определён.
- format(value, format_spec='')¶
Преобразует value в «форматированное» представление, управляемое format_spec. Интерпретация format_spec зависит от типа аргумента value; однако существует стандартный синтаксис форматирования, используемый большинством встроенных типов: Мини-язык спецификации форматирования.
Значение format_spec по умолчанию – пустая строка, что обычно даёт тот же эффект, что и вызов
str(value).Вызов
format(value, format_spec)преобразуется вtype(value).__format__(value, format_spec), который обходит словарь экземпляра при поиске метода__format__()у значения. ИсключениеTypeErrorвозникает, если поиск метода достигаетobject, а format_spec не пуст, или если format_spec или возвращаемое значение не являются строками.Изменено в версии 3.4:
object().__format__(format_spec)вызываетTypeError, если format_spec не является пустой строкой.
- class frozenset(iterable=set())
Возвращает новый объект
frozenset, опционально с элементами, взятыми из iterable.frozenset– встроенный класс. Документацию по этому классу см. вfrozensetи Типы множеств – set, frozenset.Для других контейнеров см. встроенные классы
set,list,tupleиdict, а также модульcollections.
- getattr(object, name)¶
- getattr(object, name, default)
Возвращает значение именованного атрибута объекта object. name должен быть строкой. Если строка является именем одного из атрибутов объекта, результатом будет значение этого атрибута. Например,
getattr(x, 'foobar')эквивалентноx.foobar. Если именованный атрибут не существует, возвращается default, если он передан, в противном случае вызываетсяAttributeError. name не обязательно должен быть идентификатором Python (см.setattr()).Примечание
Поскольку искажение имени закрытых атрибутов происходит во время компиляции, необходимо вручную исказить имя закрытого атрибута (атрибуты с двумя подчеркиваниями в начале), чтобы получить его с помощью
getattr().
- globals()¶
Возвращает словарь, реализующий пространство имен текущего модуля. Для кода внутри функций он устанавливается при определении функции и остается неизменным независимо от того, откуда функция вызывается.
- hasattr(object, name)¶
Аргументами являются объект и строка. Результат равен
True, если строка является именем одного из атрибутов объекта, иFalseв противном случае. (Реализовано вызовомgetattr(object, name)и проверкой, вызывает ли он исключениеAttributeErrorили нет.)
- hash(object)¶
Возвращает хеш-значение объекта (если оно есть). Хеш-значения – целые числа. Они используются для быстрого сравнения ключей словаря при поиске. Числовые значения, равные при сравнении, имеют одинаковое хеш-значение (даже если они разных типов, как в случае 1 и 1.0).
Примечание
Для объектов с пользовательскими методами
__hash__()обратите внимание, чтоhash()усекает возвращаемое значение в зависимости от разрядности хост-машины.
- help()¶
- help(request)
Запускает встроенную справочную систему. (Эта функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная справочная система запускается на консоли интерпретатора. Если аргумент – строка, то она ищется как имя модуля, функции, класса, метода, ключевого слова или темы документации, и на консоль выводится страница справки. Если аргумент – объект любого другого типа, генерируется страница справки по этому объекту.
Обратите внимание, что если при вызове
help()в списке параметров функции встречается косая черта (/), это означает, что параметры до нее являются только позиционными. Подробнее см. запись в FAQ о только позиционных параметрах.Эта функция добавляется во встроенное пространство имен модулем
site.
- hex(x)¶
Преобразует целое число в шестнадцатеричную строку в нижнем регистре с префиксом «0x». Если x не является объектом Python
int, он должен определять метод__index__(), который возвращает целое число. Некоторые примеры:>>> hex(255) '0xff' >>> hex(-42) '-0x2a'
Если вы хотите преобразовать целое число в шестнадцатеричную строку в верхнем или нижнем регистре, с префиксом или без, можно использовать любой из следующих способов:
>>> '%#x' % 255, '%x' % 255, '%X' % 255 ('0xff', 'ff', 'FF') >>> format(255, '#x'), format(255, 'x'), format(255, 'X') ('0xff', 'ff', 'FF') >>> f'{255:#x}', f'{255:x}', f'{255:X}' ('0xff', 'ff', 'FF')
См. также
format()для получения дополнительной информации.См. также
int()для преобразования шестнадцатеричной строки в целое число с основанием 16.Примечание
Чтобы получить шестнадцатеричное строковое представление числа с плавающей точкой, используйте метод
float.hex().
- id(object)¶
Возвращает «идентификатор» объекта. Это целое число, которое гарантированно будет уникальным и постоянным для данного объекта на протяжении его времени жизни. Два объекта с непересекающимся временем жизни могут иметь одинаковое значение
id().Особенность реализации CPython: Это адрес объекта в памяти.
Вызывает событие аудита
builtins.idс аргументомid.
- input()¶
- input(prompt)
Если аргумент prompt присутствует, он выводится в стандартный вывод без символа новой строки. Затем функция читает строку из ввода, преобразует её в строку (удаляя конечный символ новой строки) и возвращает её. Когда достигнут конец файла, возбуждается
EOFError. Пример:>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
Если модуль
readlineбыл загружен, тоinput()будет использовать его для предоставления расширенных возможностей редактирования строки и истории команд.Возбуждает событие аудита
builtins.inputс аргументомpromptперед чтением вводаВозбуждает событие аудита
builtins.input/resultс результатом после успешного чтения ввода.
- class int(number=0, /)¶
- class int(string, /, base=10)
Возвращает целочисленный объект, созданный на основе числа или строки, или возвращает
0, если аргументы не указаны.Примеры:
>>> int(123.45) 123 >>> int('123') 123 >>> int(' -12_345\n') -12345 >>> int('FACE', 16) 64206 >>> int('0xface', 0) 64206 >>> int('01110011', base=2) 115
Если аргумент определяет
__int__(),int(x)возвращаетx.__int__(). Если аргумент определяет__index__(), то возвращаетсяx.__index__(). Если аргумент определяет__trunc__(), то возвращаетсяx.__trunc__(). Для чисел с плавающей запятой результат усекается в сторону нуля.Если аргумент не является числом или задан base, то он должен быть строкой, экземпляром
bytesилиbytearray, представляющим целое число в системе счисления по основанию base. Необязательно строка может начинаться с+или-(без пробела между ними), содержать ведущие нули, быть окружена пробельными символами и содержать одиночные символы подчёркивания между цифрами.Строка целого числа по основанию n содержит цифры, каждая из которых представляет значение от 0 до n-1. Значения от 0 до 9 могут быть представлены любой десятичной цифрой Unicode. Значения от 10 до 35 могут быть представлены
aдоz(илиAдоZ). По умолчанию base равно 10. Допустимые основания: 0 и 2–36. Строки с основанием 2, 8 и 16 могут быть необязательно дополнены префиксом0b/0B,0o/0Oили0x/0X, как и целочисленные литералы в коде. Для основания 0 строка интерпретируется аналогично целочисленному литералу в коде, в том смысле, что фактическое основание (2, 8, 10 или 16) определяется префиксом. Основание 0 также запрещает ведущие нули:int('010', 0)недопустимо, тогда какint('010')иint('010', 8)допустимы.Целочисленный тип описан в разделе Числовые типы – int, float, complex.
Изменено в версии 3.4: Если base не является экземпляром
intи объект base имеет методbase.__index__, то вызывается этот метод для получения целого числа для основания. В предыдущих версиях использовалсяbase.__int__вместоbase.__index__.Изменено в версии 3.6: Разрешена группировка цифр с помощью подчёркиваний, как в литералах кода.
Изменено в версии 3.7: Первый параметр теперь является только позиционным.
Изменено в версии 3.8: Использует
__index__(), если__int__()не определён.Изменено в версии 3.11: Делегирование
__trunc__()объявлено устаревшим.Изменено в версии 3.11:
intстроковые вводы и строковые представления могут быть ограничены для предотвращения атак типа «отказ в обслуживании». ИсключениеValueErrorвозбуждается, когда превышен лимит при преобразовании строки вintили когда преобразованиеintв строку превысило бы лимит. См. документацию integer string conversion length limitation.
- isinstance(object, classinfo)¶
Возвращает
True, если аргумент object является экземпляром аргумента classinfo или его (прямого, косвенного или виртуального) подкласса. Если object не является объектом указанного типа, функция всегда возвращаетFalse. Если classinfo является кортежем объектов типов (или рекурсивно, других таких кортежей) или типом объединения (Union Type) из нескольких типов, возвращаетTrue, если object является экземпляром любого из этих типов. Если classinfo не является типом или кортежем типов и таких кортежей, возбуждается исключениеTypeError.TypeErrorможет не возбуждаться для недопустимого типа, если более ранняя проверка прошла успешно.Изменено в версии 3.10: classinfo может быть типом объединения (Union Type).
- issubclass(class, classinfo)¶
Возвращает
True, если class является подклассом (прямым, косвенным или виртуальным) classinfo. Класс считается своим собственным подклассом. classinfo может быть кортежем объектов классов (или рекурсивно, других таких кортежей) или типом объединения (Union Type), в этом случае возвращаетTrue, если class является подклассом любого элемента в classinfo. В любом другом случае возбуждается исключениеTypeError.Изменено в версии 3.10: classinfo может быть типом объединения (Union Type).
- iter(object)¶
- iter(object, sentinel)
Возвращает объект итератора. Первый аргумент интерпретируется совершенно по-разному в зависимости от наличия второго аргумента. Без второго аргумента object должен быть объектом-коллекцией, который поддерживает протокол итерируемого (метод
__iter__()), или должен поддерживать протокол последовательности (метод__getitem__()с целочисленными аргументами, начиная с0). Если он не поддерживает ни один из этих протоколов, возбуждаетсяTypeError. Если задан второй аргумент, sentinel, то object должен быть вызываемым объектом. Созданный в этом случае итератор будет вызывать object без аргументов при каждом вызове своего метода__next__(); если возвращённое значение равно sentinel, будет возбужденоStopIteration, иначе значение будет возвращено.См. также Типы итераторов.
Одно из полезных применений второй формы
iter()– создание построчного (блочного) читателя. Например, чтение блоков фиксированной ширины из двоичного файла базы данных до достижения конца файла:from functools import partial with open('mydata.db', 'rb') as f: for block in iter(partial(f.read, 64), b''): process_block(block)
- len(s)¶
Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (например, строка, байты, кортеж, список или диапазон) или коллекция (например, словарь, множество или замороженное множество).
Особенность реализации CPython:
lenвозбуждаетOverflowErrorдля длин, превышающихsys.maxsize, напримерrange(2 ** 100).
- class list
- class list(iterable)
Вместо того чтобы быть функцией,
listна самом деле является изменяемым типом последовательности, как описано в Списки и Типы последовательностей – list, tuple, range.
- locals()¶
Обновляет и возвращает словарь, представляющий текущую таблицу локальных символов. Свободные переменные возвращаются
locals()при вызове в блоках функций, но не в блоках классов. Обратите внимание, что на уровне модуляlocals()иglobals()являются одним и тем же словарём.Примечание
Содержимое этого словаря не следует изменять; изменения могут не повлиять на значения локальных и свободных переменных, используемых интерпретатором.
- map(function, iterable, *iterables)¶
Возвращает итератор, который применяет функцию к каждому элементу итерируемого объекта, возвращая результаты. Если передаются дополнительные аргументы итерируемых объектов, функция должна принимать соответствующее количество аргументов и применяется к элементам из всех итерируемых объектов параллельно. Для нескольких итерируемых объектов итератор останавливается, когда самый короткий исчерпан. Для случаев, когда входные данные функции уже разложены на кортежи аргументов, см.
itertools.starmap().
- max(iterable, *, key=None)¶
- max(iterable, *, default, key=None)
- max(arg1, arg2, *args, key=None)
Возвращает наибольший элемент итерируемого объекта или наибольший из двух или более аргументов.
Если указан один позиционный аргумент, он должен быть итерируемым объектом. Возвращается наибольший элемент итерируемого объекта. Если указано два или более позиционных аргумента, возвращается наибольший из них.
Есть два необязательных аргумента, передаваемых только по ключу. Аргумент key задаёт функцию упорядочения с одним аргументом, подобно тому, как это делается для
list.sort(). Аргумент default задаёт объект, возвращаемый, если переданный итерируемый объект пуст. Если итерация пуста и default не указан, возбуждаетсяValueError.Если несколько элементов являются максимальными, функция возвращает первый встреченный. Это согласуется с другими инструментами, сохраняющими стабильность сортировки, такими как
sorted(iterable, key=keyfunc, reverse=True)[0]иheapq.nlargest(1, iterable, key=keyfunc).Изменено в версии 3.4: Добавлен параметр default, передаваемый только по ключу.
Изменено в версии 3.8: Аргумент key может быть
None.
- class memoryview(object)
Возвращает объект «представление памяти» (memory view), созданный из переданного аргумента. Дополнительную информацию см. в Memory Views.
- min(iterable, *, key=None)¶
- min(iterable, *, default, key=None)
- min(arg1, arg2, *args, key=None)
Возвращает наименьший элемент итерируемого объекта или наименьший из двух или более аргументов.
Если указан один позиционный аргумент, он должен быть итерируемым объектом. Возвращается наименьший элемент итерируемого объекта. Если указано два или более позиционных аргумента, возвращается наименьший из них.
Есть два необязательных аргумента, передаваемых только по ключу. Аргумент key задаёт функцию упорядочения с одним аргументом, подобно тому, как это делается для
list.sort(). Аргумент default задаёт объект, возвращаемый, если переданный итерируемый объект пуст. Если итерация пуста и default не указан, возбуждаетсяValueError.Если несколько элементов являются минимальными, функция возвращает первый из них. Это согласуется с другими инструментами, сохраняющими устойчивость сортировки, такими как
sorted(iterable, key=keyfunc)[0]иheapq.nsmallest(1, iterable, key=keyfunc).Изменено в версии 3.4: Добавлен параметр default, передаваемый только по ключу.
Изменено в версии 3.8: Аргумент key может быть
None.
- next(iterator)¶
- next(iterator, default)
Извлекает следующий элемент из итератора вызовом его метода
__next__(). Если задан default, он возвращается, когда итератор исчерпан, в противном случае возбуждаетсяStopIteration.
- class object¶
Это самый базовый класс для всех остальных классов. Он содержит методы, общие для всех экземпляров классов Python. При вызове конструктора он возвращает новый пустой объект. Конструктор не принимает никаких аргументов.
- oct(x)¶
Преобразует целое число в восьмеричную строку с префиксом «0o». Результат является допустимым выражением Python. Если x не является объектом Python
int, он должен определять метод__index__(), который возвращает целое число. Например:>>> oct(8) '0o10' >>> oct(-56) '-0o70'
Если требуется преобразовать целое число в восьмеричную строку с префиксом «0o» или без него, можно воспользоваться одним из следующих способов.
>>> '%#o' % 10, '%o' % 10 ('0o12', '12') >>> format(10, '#o'), format(10, 'o') ('0o12', '12') >>> f'{10:#o}', f'{10:o}' ('0o12', '12')
См. также
format()для получения дополнительной информации.
- open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)¶
Открывает file и возвращает соответствующий файловый объект. Если файл не может быть открыт, возбуждается
OSError. См. Чтение и запись файлов для дополнительных примеров использования этой функции.file – это path-like object, задающий путь (абсолютный или относительный относительно текущей рабочей директории) к открываемому файлу или целый файловый дескриптор оборачиваемого файла. (Если задан файловый дескриптор, он закрывается при закрытии возвращаемого объекта I/O, если только closefd не установлен в
False.)mode – необязательная строка, задающая режим открытия файла. По умолчанию
'r', что означает открытие для чтения в текстовом режиме. Другие распространённые значения:'w'для записи (с усечением файла, если он уже существует),'x'для эксклюзивного создания и'a'для добавления (что в некоторых системах Unix означает, что все записи добавляются в конец файла независимо от текущей позиции). В текстовом режиме, если encoding не указана, используется кодировка, зависящая от платформы: вызываетсяlocale.getencoding()для получения текущей локали. (Для чтения и записи сырых байтов используйте двоичный режим и оставляйте encoding неуказанным.) Доступны следующие режимы:Символ
Значение
'r'открытие для чтения (по умолчанию)
'w'открытие для записи, с предварительным усечением файла
'x'открытие для эксклюзивного создания, завершается ошибкой, если файл уже существует
'a'открытие для записи, добавление в конец файла, если он существует
'b'двоичный режим
't'текстовый режим (по умолчанию)
'+'открытие для обновления (чтения и записи)
Режим по умолчанию –
'r'(открытие для чтения текста, синоним'rt'). Режимы'w+'и'w+b'открывают и усекают файл. Режимы'r+'и'r+b'открывают файл без усечения.Как упоминалось в Обзоре, Python различает двоичный и текстовый ввод-вывод. Файлы, открытые в двоичном режиме (включая
'b'в аргументе mode), возвращают содержимое в виде объектовbytesбез какого-либо декодирования. В текстовом режиме (по умолчанию или когда't'включён в аргумент mode) содержимое файла возвращается какstr, при этом байты предварительно декодируются с использованием кодировки, зависящей от платформы, или указанной encoding, если она задана.Примечание
Python не зависит от представления текстовых файлов в базовой операционной системе; вся обработка выполняется самим Python и, следовательно, не зависит от платформы.
buffering – необязательное целое число, задающее политику буферизации. Передайте 0 для отключения буферизации (разрешено только в двоичном режиме), 1 для выбора построчной буферизации (возможно только при записи в текстовом режиме) и целое число > 1 для указания размера в байтах буфера фиксированного размера. Обратите внимание, что указание размера буфера таким образом применяется для двоичного буферизованного ввода-вывода, но
TextIOWrapper(т.е. файлы, открытые сmode='r+') будут иметь другую буферизацию. Чтобы отключить буферизацию вTextIOWrapper, рассмотрите использование флагаwrite_throughдляio.TextIOWrapper.reconfigure(). Если аргумент buffering не задан, политика буферизации по умолчанию работает следующим образом:Двоичные файлы буферизируются блоками фиксированного размера; размер буфера выбирается эвристически, пытаясь определить «размер блока» нижележащего устройства, и при неудаче используется
io.DEFAULT_BUFFER_SIZE. Во многих системах размер буфера обычно составляет 4096 или 8192 байта.«Интерактивные» текстовые файлы (файлы, для которых
isatty()возвращаетTrue) используют построчную буферизацию. Остальные текстовые файлы используют политику, описанную выше для двоичных файлов.
encoding – это имя кодировки, используемой для декодирования или кодирования файла. Этот параметр следует использовать только в текстовом режиме. Кодировка по умолчанию зависит от платформы (возвращаемое значение
locale.getencoding()), но можно использовать любую текстовую кодировку, поддерживаемую Python. Список поддерживаемых кодировок см. в модулеcodecs.errors – необязательная строка, определяющая, как обрабатывать ошибки кодирования и декодирования; этот параметр нельзя использовать в двоичном режиме. Доступны различные стандартные обработчики ошибок (перечислены в разделе Обработчики ошибок), однако также подходит любое имя обработчика, зарегистрированное с помощью
codecs.register_error(). Стандартные имена включают:'strict'– возбуждать исключениеValueErrorпри ошибке кодирования. Значение по умолчаниюNoneимеет тот же эффект.'ignore'– игнорировать ошибки. Учтите, что игнорирование ошибок кодирования может привести к потере данных.'replace'– вставляет заменяющий символ (например,'?') в местах повреждённых данных.'surrogateescape'– представляет некорректные байты как суррогатные кодовые единицы в диапазоне U+DC80–U+DCFF. При записи данных эти суррогатные единицы снова преобразуются в исходные байты при использовании обработчика ошибокsurrogateescape. Это удобно для обработки файлов с неизвестной кодировкой.'xmlcharrefreplace'поддерживается только при записи в файл. Символы, не поддерживаемые кодировкой, заменяются соответствующей XML-ссылкой на символ&#nnn;.'backslashreplace'заменяет повреждённые данные escape-последовательностями Python с обратной косой чертой.'namereplace'(также поддерживается только при записи) заменяет неподдерживаемые символы escape-последовательностями\N{...}.
определяет, как разбирать символы новой строки из потока. Может принимать значения
None,'','\n','\r'и'\r\n'. Работает следующим образом:При чтении из потока, если newline равен
None, включается универсальный режим новых строк. Строки во входных данных могут заканчиваться на'\n','\r'или'\r\n'; перед возвратом вызывающему коду они преобразуются в'\n'. Если равен'', универсальный режим новых строк включён, но концы строк возвращаются как есть, без преобразования. Если задано любое другое допустимое значение, строки на входе завершаются только заданной строкой, и конец строки возвращается вызывающему коду без изменений.При записи в поток, если newline равен
None, все символы'\n'преобразуются в системный разделитель строк по умолчаниюos.linesep. Если newline равен''или'\n', преобразование не выполняется. Если newline равен любому другому допустимому значению, все символы'\n'преобразуются в заданную строку.
Если closefd равен
Falseи был передан файловый дескриптор, а не имя файла, то базовый файловый дескриптор останется открытым после закрытия файла. Если передано имя файла, то closefd должен бытьTrue(значение по умолчанию); в противном случае будет возбуждена ошибка.Можно задать собственный «открыватель», передав вызываемый объект как opener. Базовый файловый дескриптор для файлового объекта получается вызовом opener с аргументами (file, flags). opener должен вернуть открытый файловый дескриптор (передача
os.openв качестве opener даёт результат, аналогичный передачеNone).Созданный файл является ненаследуемым.
В следующем примере используется параметр dir_fd функции
os.open()для открытия файла относительно заданного каталога:>>> import os >>> dir_fd = os.open('somedir', os.O_RDONLY) >>> def opener(path, flags): ... return os.open(path, flags, dir_fd=dir_fd) ... >>> with open('spamspam.txt', 'w', opener=opener) as f: ... print('This will be written to somedir/spamspam.txt', file=f) ... >>> os.close(dir_fd) # не допустить утечки файлового дескриптора
Тип файлового объекта, возвращаемого функцией
open(), зависит от режима. При использованииopen()для открытия файла в текстовом режиме ('w','r','wt','rt'и т.д.) возвращается подклассio.TextIOBase(а именноio.TextIOWrapper). При открытии файла в двоичном режиме с буферизацией возвращаемый класс является подклассомio.BufferedIOBase. Конкретный класс различается: в режиме чтения в двоичном виде возвращаетсяio.BufferedReader; в режимах записи и добавления в двоичном виде –io.BufferedWriter, а в режиме чтения/записи –io.BufferedRandom. Если буферизация отключена, возвращается необработанный поток – подклассio.RawIOBase,io.FileIO.См. также модули для работы с файлами:
fileinput,io(где объявленоopen()),os,os.path,tempfileиshutil.Вызывает событие аудита
openс аргументамиpath,mode,flags.Аргументы
modeиflagsмогли быть изменены или определены на основе исходного вызова.Изменено в версии 3.3:
Добавлен параметр opener.
Добавлен режим
'x'.Теперь возбуждается
FileExistsError, если файл, открываемый в эксклюзивном режиме создания ('x'), уже существует.
Изменено в версии 3.4:
Файл теперь является ненаследуемым.
Изменено в версии 3.5:
Если системный вызов был прерван и обработчик сигнала не возбудил исключение, функция теперь повторяет системный вызов вместо возбуждения исключения
InterruptedError(см. PEP 475 для обоснования).Добавлен обработчик ошибок
'namereplace'.
Изменено в версии 3.6:
Добавлена поддержка объектов, реализующих
os.PathLike.В Windows открытие консольного буфера может вернуть подкласс
io.RawIOBase, отличный отio.FileIO.
Изменено в версии 3.11: Режим
'U'удалён.
- ord(c)¶
Принимает строку, представляющую один символ Unicode, и возвращает целое число – кодовую точку Unicode этого символа. Например,
ord('a')возвращает целое число97, аord('€')(знак евро) возвращает8364. Это функция, обратнаяchr().
- pow(base, exp, mod=None)¶
Возвращает base в степени exp; если указан mod, возвращает base в степени exp по модулю mod (вычисляется эффективнее, чем
pow(base, exp) % mod). Двухаргументная формаpow(base, exp)эквивалентна использованию оператора возведения в степень:base**exp.Аргументы должны иметь числовые типы. При смешанных типах операндов применяются правила приведения для бинарных арифметических операторов. Для операндов
intрезультат имеет тот же тип, что и операнды (после приведения), если только второй аргумент не отрицателен; в этом случае все аргументы преобразуются в float и возвращается результат типа float. Например,pow(10, 2)возвращает100, аpow(10, -2)возвращает0.01. Для отрицательного основания типаintилиfloatи нецелого показателя степени возвращается комплексный результат. Например,pow(-9, 0.5)возвращает значение, близкое к3j. Для отрицательного основания типаintилиfloatс целым показателем степени возвращается результат типа float. Например,pow(-9, 2.0)возвращает81.0.Для операндов
intbase и exp, если указан mod, mod также должен быть целого типа, и mod должен быть ненулевым. Если mod указан и exp отрицателен, base должен быть взаимно прост с mod. В этом случае возвращаетсяpow(inv_base, -exp, mod), где inv_base – обратный элемент к base по модулю mod.Вот пример вычисления обратного элемента для
38по модулю97:>>> pow(38, -1, mod=97) 23 >>> 23 * 38 % 97 == 1 True
Изменено в версии 3.8: Для операндов
intтрёхаргументная формаpowтеперь допускает отрицательный второй аргумент, что позволяет вычислять обратные элементы по модулю.Изменено в версии 3.8: Разрешены именованные аргументы. Ранее поддерживались только позиционные аргументы.
- print(*objects, sep=' ', end='\n', file=None, flush=False)¶
Выводит objects в текстовый поток file, разделённые sep и завершаемые end. sep, end, file и flush, если указаны, должны передаваться как именованные аргументы.
Все неименованные аргументы преобразуются в строки, как
str(), и записываются в поток, разделённые sep и завершаемые end. Оба sep и end должны быть строками; они также могут бытьNone, что означает использование значений по умолчанию. Если objects не указаны,print()просто запишет end.Аргумент file должен быть объектом с методом
write(string); если он не указан или равенNone, будет использоватьсяsys.stdout. Так как выводимые аргументы преобразуются в текстовые строки,print()нельзя использовать с файловыми объектами в бинарном режиме. Для них используйтеfile.write(...).Буферизация вывода обычно определяется file. Однако если flush равен true, поток принудительно сбрасывается.
Изменено в версии 3.3: Добавлен именованный аргумент flush.
- class property(fget=None, fset=None, fdel=None, doc=None)¶
Возвращает атрибут property.
fget – функция для получения значения атрибута. fset – функция для установки значения атрибута. fdel – функция для удаления значения атрибута. А doc создаёт строку документации для атрибута.
Типичное использование – определить управляемый атрибут
x:class C: def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I'm the 'x' property.")
Если c – экземпляр C, то
c.xвызовет геттер,c.x = valueвызовет сеттер, аdel c.x– делитер.Если указан, doc будет строкой документации атрибута property. В противном случае property скопирует строку документации fget (если она существует). Это позволяет легко создавать свойства только для чтения, используя
property()в качестве декоратора:class Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Получить текущее напряжение.""" return self._voltage
Декоратор
@propertyпревращает методvoltage()в «геттер» для атрибута только для чтения с тем же именем и устанавливает строку документации для voltage в «Get the current voltage.»- @getter¶
- @setter¶
- @deleter¶
Объект property имеет методы
getter,setterиdeleter, которые можно использовать как декораторы; они создают копию свойства с соответствующей функцией доступа, установленной в декорированную функцию. Лучше всего это объяснить на примере:class C: def __init__(self): self._x = None @property def x(self): """Я – свойство 'x'.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
Этот код полностью эквивалентен первому примеру. Убедитесь, что дополнительные функции имеют то же имя, что и исходное свойство (
xв данном случае.)Возвращаемый объект property также имеет атрибуты
fget,fsetиfdel, соответствующие аргументам конструктора.
Изменено в версии 3.5: Строки документации объектов property теперь доступны для записи.
- class range(stop)
- class range(start, stop, step=1)
range– не функция, а неизменяемый тип последовательности, как описано в Ranges и Sequence Types – list, tuple, range.
- repr(object)¶
Возвращает строку, содержащую читаемое представление объекта. Для многих типов эта функция пытается вернуть строку, которая при передаче в
eval()даст объект с тем же значением; в противном случае представление – это строка в угловых скобках, содержащая имя типа объекта вместе с дополнительной информацией, часто включающей имя и адрес объекта. Класс может управлять тем, что возвращает эта функция для его экземпляров, определив метод__repr__(). Еслиsys.displayhook()недоступен, эта функция вызоветRuntimeError.Этот класс имеет пользовательское представление, которое можно вычислить:
class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return f"Person('{self.name}', {self.age})"
- reversed(seq)¶
Возвращает обратный итератор. seq должен быть объектом, который имеет метод
__reversed__()или поддерживает протокол последовательности (метод__len__()и метод__getitem__()с целочисленными аргументами, начиная с0).
- round(number, ndigits=None)¶
Возвращает number, округлённое до ndigits знаков после запятой. Если ndigits опущено или равно
None, возвращается ближайшее целое к входному значению.Для встроенных типов, поддерживающих
round(), значения округляются до ближайшего кратного 10 в степени минус ndigits; если два кратных одинаково близки, округление производится в сторону чётного выбора (так, например, обаround(0.5)иround(-0.5)дают0, аround(1.5)даёт2). Любое целое значение допустимо для ndigits (положительное, нулевое или отрицательное). Возвращаемое значение – целое число, если ndigits опущено или равноNone. В противном случае возвращаемое значение имеет тот же тип, что и number.Для произвольного объекта Python
numberфункцияroundделегирует выполнениеnumber.__round__.Примечание
Поведение
round()для чисел с плавающей запятой может удивлять: например,round(2.675, 2)даёт2.67вместо ожидаемого2.68. Это не ошибка: это результат того, что большинство десятичных дробей не могут быть точно представлены в виде float. См. Floating-Point Arithmetic: Issues and Limitations для получения дополнительной информации.
- class set
- class set(iterable)
Возвращает новый объект
set, опционально с элементами, взятыми из итерируемого объекта.set– это встроенный класс. См.setи Типы множеств – set, frozenset для документации об этом классе.Для других контейнеров см. встроенные классы
frozenset,list,tupleиdict, а также модульcollections.
- setattr(object, name, value)¶
Это аналог
getattr(). Аргументами являются объект, строка и произвольное значение. Строка может именовать существующий атрибут или новый атрибут. Функция присваивает значение атрибуту, если объект это позволяет. Например,setattr(x, 'foobar', 123)эквивалентноx.foobar = 123.name не обязательно должен быть идентификатором Python, как определено в Identifiers and keywords, если только объект сам не требует этого, например, в пользовательском
__getattribute__()или через__slots__. Атрибут, имя которого не является идентификатором, не будет доступен через точечную нотацию, но будет доступен черезgetattr()и т.д.Примечание
Поскольку private name mangling происходит на этапе компиляции, необходимо вручную исказить имя закрытого атрибута (атрибуты с двумя ведущими подчёркиваниями), чтобы задать его с помощью
setattr().
- class slice(stop)¶
- class slice(start, stop, step=None)
Возвращает объект slice, представляющий набор индексов, заданных
range(start, stop, step). Аргументы start и step по умолчанию равныNone.- start¶
- stop¶
- step¶
Объекты среза имеют атрибуты данных только для чтения
start,stopиstep, которые просто возвращают значения аргументов (или их значения по умолчанию). Другой явной функциональности у них нет; однако они используются NumPy и другими сторонними пакетами.
Объекты среза также создаются при использовании расширенного синтаксиса индексации. Например:
a[start:stop:step]илиa[start:stop, i]. Смотритеitertools.islice()для альтернативной версии, возвращающей итератор.
- sorted(iterable, /, *, key=None, reverse=False)¶
Возвращает новый отсортированный список из элементов итерируемого объекта.
Имеет два необязательных аргумента, которые должны быть указаны как именованные.
key задаёт функцию одного аргумента, которая извлекает ключ сравнения из каждого элемента итерируемого объекта (например,
key=str.lower). Значение по умолчанию –None(сравнивает элементы напрямую).reverse – логическое значение. Если указано
True, то элементы списка сортируются так, как если бы каждое сравнение было обратным.Используйте
functools.cmp_to_key()для преобразования устаревшей функции cmp в функцию key.Встроенная функция
sorted()гарантированно устойчива. Сортировка называется устойчивой, если она не меняет относительный порядок элементов, которые сравниваются как равные. Это удобно при многоуровневой сортировке (например, сначала по отделу, затем по зарплатной категории).Алгоритм сортировки использует только сравнения
<между элементами. Хотя для сортировки достаточно определить метод__lt__(), PEP 8 рекомендует реализовать все шесть расширенных сравнений. Это поможет избежать ошибок при использовании тех же данных с другими средствами упорядочивания, такими какmax(), которые полагаются на другой базовый метод. Реализация всех шести сравнений также помогает избежать путаницы при сравнениях смешанных типов, которые могут вызывать отражённый метод__gt__().Примеры сортировки и краткое руководство по сортировке см. в Методы сортировки.
- @staticmethod¶
Преобразует метод в статический метод.
Статический метод не получает неявный первый аргумент. Чтобы объявить статический метод, используйте такую идиому:
class C: @staticmethod def f(arg1, arg2, argN): ...
Форма
@staticmethodявляется функцией декоратора – подробнее см. в Function definitions.Статический метод можно вызвать как от класса (например,
C.f()), так и от экземпляра (например,C().f()). Кроме того, дескриптор статического метода тоже можно вызвать, поэтому его можно использовать в определении класса (например,f()).Статические методы в Python похожи на статические методы в Java или C++. Также см.
classmethod()для альтернативного варианта, полезного для создания альтернативных конструкторов класса.Как и все декораторы,
staticmethodможно вызвать как обычную функцию и что-то сделать с её результатом. Это необходимо в тех случаях, когда нужна ссылка на функцию из тела класса и требуется избежать автоматического преобразования в метод экземпляра. Для таких случаев используйте следующую идиому:def regular_function(): ... class C: method = staticmethod(regular_function)
Дополнительную информацию о статических методах см. в The standard type hierarchy.
Изменено в версии 3.10: Статические методы теперь наследуют атрибуты метода (
__module__,__name__,__qualname__,__doc__и__annotations__), имеют новый атрибут__wrapped__и теперь могут вызываться как обычные функции.
- class str(object='')
- class str(object=b'', encoding='utf-8', errors='strict')
Возвращает
str-версию объекта. Подробнее см.str().str– это встроенный строковый класс. Общую информацию о строках см. в Text Sequence Type – str.
- sum(iterable, /, start=0)¶
Суммирует start и элементы итерируемого объекта слева направо и возвращает общую сумму. Элементы итерируемого объекта обычно являются числами, а начальное значение не может быть строкой.
Для некоторых сценариев использования существуют хорошие альтернативы
sum(). Предпочтительный быстрый способ объединения последовательности строк – вызов''.join(sequence). Для сложения чисел с плавающей запятой с повышенной точностью см.math.fsum(). Для объединения нескольких итерируемых объектов рассмотритеitertools.chain().Изменено в версии 3.8: Параметр start теперь можно указывать как именованный аргумент.
Изменено в версии 3.12: Суммирование чисел с плавающей запятой переключено на алгоритм, который обеспечивает более высокую точность на большинстве сборок.
- class super¶
- class super(type, object_or_type=None)
Возвращает объект-посредник, который делегирует вызовы методов родительскому или родственному классу type. Это полезно для доступа к унаследованным методам, которые были переопределены в классе.
Параметр object_or_type определяет порядок разрешения методов, по которому будет выполняться поиск. Поиск начинается с класса, следующего сразу за type.
Например, если
__mro__объекта object_or_type равноD -> B -> C -> A -> object, а значение type равноB, тоsuper()выполняет поиск поC -> A -> object.Атрибут
__mro__класса, соответствующего object_or_type, перечисляет порядок поиска при разрешении методов, используемый какgetattr(), так иsuper(). Этот атрибут является динамическим и может изменяться при любом обновлении иерархии наследования.Если второй аргумент опущен, возвращается несвязанный объект super. Если второй аргумент является объектом,
isinstance(obj, type)должно быть истинно. Если второй аргумент является типом,issubclass(type2, type)должно быть истинно (это полезно для методов класса).Существует два типичных варианта использования super. В иерархии классов с одиночным наследованием super можно использовать для ссылки на родительские классы без явного указания их имен, что делает код более поддерживаемым. Это использование тесно параллельно использованию super в других языках программирования.
Второй вариант использования – поддержка кооперативного множественного наследования в динамической среде выполнения. Этот случай уникален для Python и не встречается в статически компилируемых языках или языках, поддерживающих только одиночное наследование. Это позволяет реализовать «ромбовидные диаграммы», где несколько базовых классов реализуют один и тот же метод. Хорошее проектирование требует, чтобы такие реализации имели одинаковую сигнатуру вызова во всех случаях (поскольку порядок вызовов определяется во время выполнения, поскольку этот порядок адаптируется к изменениям в иерархии классов и может включать родственные классы, неизвестные до выполнения).
Для обоих вариантов использования типичный вызов родительского класса выглядит так:
class C(B): def method(self, arg): super().method(arg) # Делает то же самое, что и: # super(C, self).method(arg)
В дополнение к поиску методов,
super()также работает для поиска атрибутов. Один из возможных вариантов использования – вызов дескрипторов в родительском или родственном классе.Обратите внимание, что
super()реализован как часть процесса связывания для явного поиска атрибутов через точку, напримерsuper().__getitem__(name). Он делает это, реализуя собственный метод__getattribute__()для поиска классов в предсказуемом порядке, поддерживающем кооперативное множественное наследование. Соответственно,super()не определен для неявного поиска с помощью операторов или конструкций, таких какsuper()[name].Также обратите внимание, что, за исключением формы без аргументов,
super()не ограничен использованием внутри методов. Форма с двумя аргументами точно задает аргументы и создает соответствующие ссылки. Форма без аргументов работает только внутри определения класса, так как компилятор заполняет необходимые детали для правильного извлечения определяемого класса, а также для доступа к текущему экземпляру в обычных методах.Практические рекомендации по проектированию кооперативных классов с использованием
super()см. в руководстве по использованию super().
- class tuple
- class tuple(iterable)
tupleна самом деле не функция, а неизменяемый тип последовательности, как описано в Кортежи и Типы последовательностей – list, tuple, range.
- class type(object)¶
- class type(name, bases, dict, **kwds)
С одним аргументом возвращает тип объекта object. Возвращаемое значение – объект типа, как правило, тот же объект, что и возвращаемый
object.__class__.Встроенная функция
isinstance()рекомендуется для проверки типа объекта, поскольку она учитывает подклассы.С тремя аргументами возвращает новый объект типа. По сути, это динамическая форма оператора
class. Строка name – это имя класса, она становится атрибутом__name__. Кортеж bases содержит базовые классы и становится атрибутом__bases__; если он пуст, добавляетсяobject– конечный базовый класс всех классов. Словарь dict содержит определения атрибутов и методов тела класса; он может быть скопирован или обёрнут перед тем, как стать атрибутом__dict__. Следующие два оператора создают идентичные объектыtype:>>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1))
См. также:
Именованные аргументы, переданные форме с тремя аргументами, передаются соответствующему механизму метакласса (обычно
__init_subclass__()) так же, как и ключевые слова в определении класса (кроме metaclass).См. также Настройка создания классов.
Изменено в версии 3.6: Подклассы
type, не переопределяющиеtype.__new__, больше не могут использовать форму с одним аргументом для получения типа объекта.
- vars()¶
- vars(object)
Возвращает атрибут
__dict__для модуля, класса, экземпляра или любого другого объекта с атрибутом__dict__.Такие объекты, как модули и экземпляры, имеют обновляемый атрибут
__dict__; однако другие объекты могут иметь ограничения на запись своих атрибутов__dict__(например, классы используютtypes.MappingProxyTypeдля предотвращения прямых изменений словаря).Без аргумента
vars()ведёт себя какlocals(). Примечание: словарь locals полезен только для чтения, так как обновления словаря locals игнорируются.Исключение
TypeErrorвозбуждается, если указан объект, но у него нет атрибута__dict__(например, если его класс определяет атрибут__slots__).
- zip(*iterables, strict=False)¶
Производит итерацию по нескольким итерируемым объектам параллельно, формируя кортежи с элементом из каждого.
Пример:
>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']): ... print(item) ... (1, 'sugar') (2, 'spice') (3, 'everything nice')
Более формально:
zip()возвращает итератор кортежей, где i-й кортеж содержит i-й элемент из каждого из переданных итерируемых объектов.Ещё один способ представить
zip()– это превращение строк в столбцы и столбцов в строки. Это похоже на транспонирование матрицы.zip()ленив: элементы не будут обработаны, пока по итерируемому объекту не будет выполнена итерация, например, с помощью циклаforили помещения вlist.Следует учитывать, что итерируемые объекты, передаваемые в
zip(), могут иметь разную длину; иногда это сделано намеренно, а иногда – из-за ошибки в коде, подготовившем эти итерируемые объекты. Python предлагает три разных подхода к решению этой проблемы:По умолчанию
zip()останавливается, когда самый короткий итерируемый объект исчерпан. Оставшиеся элементы в более длинных итерируемых объектах игнорируются, обрезая результат до длины самого короткого:>>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'])) [(0, 'fee'), (1, 'fi'), (2, 'fo')]
zip()часто используется в случаях, когда предполагается, что итерируемые объекты имеют одинаковую длину. В таких случаях рекомендуется использовать параметрstrict=True. Его вывод совпадает с обычнымzip():>>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2), ('c', 3)]
В отличие от поведения по умолчанию, он вызывает исключение
ValueError, если один итерируемый объект исчерпан раньше других:>>> for item in zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True): ... print(item) ... (0, 'fee') (1, 'fi') (2, 'fo') Traceback (most recent call last): ... ValueError: zip() argument 2 is longer than argument 1
Без аргумента
strict=Trueлюбая ошибка, приводящая к итерируемым объектам разной длины, будет скрыта, возможно, проявившись как труднообнаруживаемая ошибка в другой части программы.Более короткие итерируемые объекты могут быть дополнены постоянным значением, чтобы все итерируемые объекты имели одинаковую длину. Это делается с помощью
itertools.zip_longest().
Крайние случаи: с одним аргументом-итерируемым объектом
zip()возвращает итератор из 1-кортежей. Без аргументов возвращает пустой итератор.Советы и хитрости:
Гарантируется порядок вычисления итерируемых объектов слева направо. Это позволяет использовать идиому для группировки последовательности данных в группы длины n с помощью
zip(*[iter(s)]*n, strict=True). При этом тот же самый итератор повторяетсяnраз, так что каждый выходной кортеж содержит результатnвызовов итератора. Это приводит к разбиению входных данных на блоки длины n.zip()в сочетании с оператором*можно использовать для распаковки списка:>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> list(zip(x, y)) [(1, 4), (2, 5), (3, 6)] >>> x2, y2 = zip(*zip(x, y)) >>> x == list(x2) and y == list(y2) True
Изменено в версии 3.10: Добавлен аргумент
strict.
- __import__(name, globals=None, locals=None, fromlist=(), level=0)¶
Примечание
Это продвинутая функция, которая не требуется в повседневном программировании на Python, в отличие от
importlib.import_module().Эта функция вызывается оператором
import. Её можно заменить (импортировав модульbuiltinsи присвоивbuiltins.__import__), чтобы изменить семантику оператораimport, но делать это настоятельно не рекомендуется, так как обычно проще использовать перехватчики импорта (см. PEP 302) для достижения тех же целей, и это не вызывает проблем с кодом, предполагающим использование реализации импорта по умолчанию. Прямое использование__import__()также не рекомендуется, вместо него следует использоватьimportlib.import_module().Функция импортирует модуль name, потенциально используя переданные globals и locals для определения того, как интерпретировать имя в контексте пакета. fromlist задаёт имена объектов или подмодулей, которые должны быть импортированы из модуля, заданного name. Стандартная реализация вообще не использует свой аргумент locals, а globals использует только для определения контекста пакета оператора
import.level указывает, использовать ли абсолютный или относительный импорт.
0(по умолчанию) означает только абсолютный импорт. Положительные значения level указывают количество родительских каталогов для поиска относительно каталога модуля, вызывающего__import__()(подробнее см. PEP 328).Когда переменная name имеет вид
package.module, обычно возвращается пакет верхнего уровня (имя до первой точки), а не модуль, названный name. Однако, если передан непустой аргумент fromlist, возвращается модуль, названный name.Например, оператор
import spamприводит к байт-коду, напоминающему следующий код:spam = __import__('spam', globals(), locals(), [], 0)
Оператор
import spam.hamприводит к следующему вызову:spam = __import__('spam.ham', globals(), locals(), [], 0)
Обратите внимание, как
__import__()возвращает модуль верхнего уровня, потому что это объект, который привязывается к имени операторомimport.С другой стороны, оператор
from spam.ham import eggs, sausage as sausприводит к_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) eggs = _temp.eggs saus = _temp.sausage
Здесь модуль
spam.hamвозвращается из__import__(). Из этого объекта извлекаются имена для импорта и присваиваются соответствующим именам.Если требуется просто импортировать модуль (возможно, внутри пакета) по имени, используйте
importlib.import_module().Изменено в версии 3.3: Отрицательные значения level больше не поддерживаются (это также меняет значение по умолчанию на 0).
Изменено в версии 3.9: При использовании параметров командной строки
-Eили-Iпеременная окруженияPYTHONCASEOKтеперь игнорируется.
Сноски
Эта страница – перевод. Оригинал на английском – docs.python.org. Нашли неточность? Сообщите нам.