Встроенные функции¶
Интерпретатор Python имеет ряд встроенных функций и типов, которые всегда доступны. Они перечислены здесь в алфавитном порядке.
Встроенные функции |
|||
---|---|---|---|
- abs(x)¶
Возвращает абсолютное значение числа. Аргументом может быть целое число, число с плавающей запятой или объект, реализующий
__abs__()
. Если аргументом является комплексное число, возвращается его величина.
- aiter(async_iterable)¶
Возвращает asynchronous iterator вместо asynchronous iterable. Эквивалентно вызову
x.__aiter__()
.Примечание: В отличие от
iter()
,aiter()
не имеет варианта с двумя аргументами.Добавлено в версии 3.10.
- all(iterable)¶
Возвращает
True
, если все элементы iterable имеют значение true (или если iterable пуст). Эквивалентно:def all(iterable): for element in iterable: if not element: return False return True
- awaitable anext(async_iterator)¶
- awaitable anext(async_iterator, default)
Когда ожидается, верните следующий элемент из заданного asynchronous iterator или default, если он задан, и итератор исчерпан.
Это асинхронный вариант встроенного
next()
, который ведет себя аналогично.При этом вызывается
__anext__()
метод async_iterator, возвращающий значение awaitable. В ожидании этого возвращает следующее значение итератора. Если задано значение default, оно возвращается, если итератор исчерпан, в противном случае вызывается значениеStopAsyncIteration
.Добавлено в версии 3.10.
- any(iterable)¶
Возвращает
True
, если какой-либо элемент iterable имеет значение true. Если 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(x=False)¶
Возвращает логическое значение, т.е. одно из
True
илиFalse
. x преобразуется с использованием стандартного truth testing procedure. Если значение x равно false или опущено, то возвращаетсяFalse
; в противном случае возвращаетсяTrue
. Классbool
является подклассомint
(см. Числовые типы — int, float, complex). Он не может быть разделен на дополнительные подклассы. Его единственными экземплярами являютсяFalse
иTrue
(см. Логические значения).Изменено в версии 3.7: x теперь является параметром только для определения местоположения.
- 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()
.Создает auditing event
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 можно использовать для инициализации массива несколькими различными способами:
Если это строка, вы также должны указать параметры encoding (и, необязательно, errors);
bytearray()
затем преобразует строку в байты с помощьюstr.encode()
.Если это целое число, то массив будет иметь такой размер и будет инициализирован нулевыми байтами.
Если это объект, соответствующий buffer interface, то для инициализации массива байт будет использоваться буфер объекта, доступный только для чтения.
Если он является повторяемым, то это должен быть набор целых чисел в диапазоне
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, bytearray, memoryview, Объекты в байтах, и Операции с байтами и Bytearray.
- callable(object)¶
Верните
True
, если аргумент object кажется доступным для вызова,False
, если нет. Если это возвращаетTrue
, все еще возможно, что вызов завершится неудачей, но если этоFalse
, вызов object никогда не будет успешным. Обратите внимание, что классы доступны для вызова (вызов класса возвращает новый экземпляр); экземпляры доступны для вызова, если их класс имеет метод__call__()
.Добавлено в версии 3.2: Эта функция была впервые удалена в Python 3.0, а затем возвращена в Python 3.2.
- chr(i)¶
Возвращает строку, представляющую символ, кодовой точкой которого в Юникоде является целое число i. Например,
chr(97)
возвращает строку'a'
, в то время какchr(8364)
возвращает строку'€'
. Это величина, обратнаяord()
.Допустимый диапазон для аргумента - от 0 до 1 114 111 (0x10FFFF в базе 16).
ValueError
будет поднято значение, если i находится за пределами этого диапазона.
- @classmethod¶
Преобразуйте метод в метод класса.
Метод класса получает class в качестве неявного первого аргумента, точно так же, как метод экземпляра получает instance. Чтобы объявить метод класса, используйте эту идиому:
class C: @classmethod def f(cls, arg1, arg2): ...
Форма
@classmethod
является функцией decorator - подробности смотрите в Определения функций.Метод класса может быть вызван либо для класса (например,
C.f()
), либо для экземпляра (например,C().f()
). Экземпляр игнорируется, за исключением его класса. Если для производного класса вызывается метод класса, объект производного класса передается в качестве подразумеваемого первого аргумента.Методы класса отличаются от статических методов C++ или Java. Если они вам нужны, смотрите
staticmethod()
в этом разделе. Дополнительные сведения о методах класса см. в Иерархия стандартных типов.Изменено в версии 3.9: Методы класса теперь могут обертывать другие descriptors, такие как
property()
.Изменено в версии 3.10: Методы класса теперь наследуют атрибуты method (
__module__
,__name__
,__qualname__
,__doc__
и__annotations__
) и имеют новый атрибут__wrapped__
.Изменено в версии 3.11: Методы класса больше не могут обертывать другие descriptors, такие как
property()
.
- compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)¶
Скомпилируйте исходный код в код или объект AST. Объекты кода могут выполняться с помощью
exec()
илиeval()
. исходный код может быть обычной строкой, байтовой строкой или объектом AST. Обратитесь к документации по модулюast
для получения информации о том, как работать с объектами AST.Аргумент filename должен указывать файл, из которого был считан код; передайте некоторое распознаваемое значение, если оно не было прочитано из файла (обычно используется
'<string>'
).Аргумент mode указывает, какой тип кода должен быть скомпилирован; он может быть
'exec'
, если source состоит из последовательности инструкций,'eval'
, если он состоит из одного выражения, или'single'
, если он состоит из одного интерактивного оператора (в последнем случае будут напечатаны операторы expression, значение которых отличается отNone
).Необязательные аргументы flags и dont_inherit определяют, какой compiler options должен быть активирован, а какой future features должен быть разрешен. Если ни один из них не присутствует (или оба равны нулю), код компилируется с теми же флагами, которые влияют на код, вызывающий
compile()
. Если задан аргумент flags, а значение dont_inherit отсутствует (или равно нулю), то параметры компилятора и будущие инструкции, указанные в аргументе flags, используются в дополнение к тем, которые использовались бы в любом случае. Если dont_inherit является ненулевым целым числом, то аргумент flags таков: флаги (будущие функции и параметры компилятора) в окружающем коде игнорируются.Параметры компилятора и будущие инструкции задаются битами, которые могут быть побитово объединены для указания нескольких параметров. Битовое поле, необходимое для указания данного функционального объекта, можно найти как атрибут
compiler_flag
в экземпляре_Feature
в модуле__future__
. Compiler flags можно найти вast
модуль с префиксомPyCF_
.Аргумент optimize определяет уровень оптимизации компилятора; значение по умолчанию
-1
выбирает уровень оптимизации интерпретатора, указанный в параметрах-O
. Явными уровнями являются0
(оптимизация отсутствует;__debug__
равно true),1
( утверждения удалены,__debug__
равно false) или2
(строки документации также удалены).Эта функция генерирует
SyntaxError
, если скомпилированный исходный код является недопустимым, иValueError
, если исходный код содержит пустые байты.Если вы хотите проанализировать код Python в его AST-представлении, смотрите раздел
ast.parse()
.Создает auditing event
compile
с аргументамиsource
,filename
.Примечание
При компиляции строки с многострочным кодом в режиме
'single'
или'eval'
ввод должен завершаться как минимум одним символом новой строки. Это делается для облегчения обнаружения неполных и полных инструкций в модулеcode
.Предупреждение
При компиляции в объект AST интерпретатор Python может привести к сбою из-за достаточно большой/сложной строки при компиляции в объект AST из-за ограничений глубины стека в компиляторе AST Python.
Изменено в версии 3.2: Разрешено использование новых строк в Windows и Mac. Кроме того, ввод в режиме
'exec'
больше не должен заканчиваться новой строкой. Добавлен параметр оптимизировать.Изменено в версии 3.5: Ранее
TypeError
вызывался, когда в source встречались нулевые байты.Добавлено в версии 3.8:
ast.PyCF_ALLOW_TOP_LEVEL_AWAIT
теперь можно передавать с помощью флагов, чтобы включить поддержку верхнего уровняawait
,async for
, иasync with
.
- class complex(real=0, imag=0)¶
- class complex(string)
Возвращает комплексное число со значением real + imag*1j или преобразует строку или число в комплексное число. Если первый параметр является строкой, он будет интерпретирован как комплексное число, и функция должна вызываться без второго параметра. Второй параметр никогда не может быть строкой. Каждый аргумент может быть любого числового типа (включая сложный). Если параметр imag опущен, он по умолчанию равен нулю, и конструктор выполняет числовое преобразование, например
int
иfloat
. Если оба аргумента опущены, возвращает0j
.Для общего объекта Python
x
,complex(x)
делегируется значениеx.__complex__()
. Если значение__complex__()
не определено, то оно возвращается к значению__float__()
. Если__float__()
не определено, то оно возвращается к__index__()
.Примечание
При преобразовании из строки строка не должна содержать пробелов вокруг центрального оператора
+
или-
. Например,complex('1+2j')
подходит, ноcomplex('1 + 2j')
вызываетValueError
.Сложный тип описан в разделе Числовые типы — int, float, complex.
Изменено в версии 3.6: Допускается группировка цифр с подчеркиванием, как в кодовых литералах.
Изменено в версии 3.8: Возвращается к
__index__()
, если__complex__()
и__float__()
не определены.
- delattr(object, name)¶
Это относится к
setattr()
. Аргументами являются объект и строка. Строка должна быть именем одного из атрибутов объекта. Функция удаляет именованный атрибут, если объект это позволяет. Например,delattr(x, 'foobar')
эквивалентноdel x.foobar
. имя не обязательно должно быть идентификатором 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__
, если он определен, и из его типа object. Результирующий список не обязательно является полным и может быть неточным, если объект имеет пользовательский__getattr__()
.Механизм по умолчанию
dir()
ведет себя по-разному с разными типами объектов, поскольку он пытается получить наиболее релевантную, а не полную информацию:Если объект является объектом модуля, то список содержит имена атрибутов модуля.
Если объект относится к типу или классу object, список содержит имена его атрибутов и рекурсивно - атрибуты его оснований.
В противном случае список содержит имена атрибутов объекта, имена атрибутов его класса и рекурсивно атрибуты базовых классов его класса.
Полученный список сортируется в алфавитном порядке. Например:
>>> import struct >>> dir() # show the names in the module namespace ['__builtins__', '__name__', 'struct'] >>> dir(struct) # show the names in the struct module ['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 должен быть последовательностью, iterator или каким-либо другим объектом, поддерживающим итерацию. Метод
__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)¶
Аргументами являются строка и необязательные глобальные и локальные значения. Если указано, то globals должно быть словарем. Если указано, то locals может быть любым объектом отображения.
Аргумент expression анализируется и вычисляется как выражение Python (технически говоря, список условий) с использованием словарей globals и locals в качестве глобального и локального пространства имен. Если словарь globals присутствует и не содержит значения для ключа
__builtins__
, то перед анализом выражения под этот ключ вставляется ссылка на словарь встроенного модуляbuiltins
. Таким образом, вы можете контролировать, какие встроенные функции доступны для выполняемого кода, вставив свой собственный словарь__builtins__
в globals перед передачей его вeval()
. Если словарь locals опущен, то по умолчанию используется словарь globals. Если оба словаря опущены, выражение выполняется с использованием globals и locals в среде, в которой вызываетсяeval()
. Обратите внимание, что eval() не имеет доступа к nested scopes (нелокальным) в окружающей среде.Возвращаемое значение является результатом вычисленного выражения. Синтаксические ошибки отображаются как исключения. Пример:
>>> x = 1 >>> eval('x+1') 2
Эта функция также может использоваться для выполнения произвольных объектов кода (например, созданных с помощью
compile()
). В этом случае передайте объект кода вместо строки. Если объект code был скомпилирован с'exec'
в качестве аргумента mode,eval()
' возвращаемым значением будетNone
.Подсказки: динамическое выполнение инструкций поддерживается функцией
exec()
. Функцииglobals()
иlocals()
возвращают текущий глобальный и локальный словари соответственно, которые может быть полезно передавать для использованияeval()
илиexec()
.Если заданным источником является строка, то начальные и конечные пробелы и символы табуляции удаляются.
Смотрите
ast.literal_eval()
для функции, которая может безопасно вычислять строки с помощью выражений, содержащих только литералы.Создает auditing event
exec
с аргументомcode_object
.
- exec(object, globals=None, locals=None, /, *, closure=None)¶
Эта функция поддерживает динамическое выполнение кода Python. object должен быть либо строкой, либо объектом кода. Если это строка, то строка анализируется как набор инструкций Python, который затем выполняется (если не возникает синтаксическая ошибка). [1] Если это объект кода, он просто выполняется. Во всех случаях ожидается, что выполняемый код будет корректен в качестве входного файла (см. раздел Ввод файла в справочном руководстве). Имейте в виду, что операторы
nonlocal
,yield
, иreturn
не могут использоваться вне определений функций, даже в контексте кода, передаваемого в функциюexec()
. Возвращаемое значение равноNone
.Во всех случаях, если необязательные части опущены, код выполняется в текущей области видимости. Если указан только globals, это должен быть словарь (а не подкласс словаря), который будет использоваться как для глобальных, так и для локальных переменных. Если заданы значения globals и locals, они используются для глобальных и локальных переменных соответственно. Если они заданы, locals может быть любым объектом отображения. Помните, что на уровне модуля глобальные и локальные переменные являются одним и тем же словарем. Если exec получает два отдельных объекта в виде globals и locals, код будет выполнен так, как если бы он был встроен в определение класса.
Если словарь globals не содержит значения для ключа
__builtins__
, то под этим ключом вставляется ссылка на словарь встроенного модуляbuiltins
. Таким образом, вы можете контролировать, какие здания доступны для выполняемого кода, вставив свой собственный словарь__builtins__
в globals перед передачей его вexec()
.Аргумент closure определяет замыкание - кортеж из подвалов. Он действителен только в том случае, если object является объектом кода, содержащим свободные переменные. Длина кортежа должна точно соответствовать количеству свободных переменных, на которые ссылается объект кода.
Создает auditing event
exec
с аргументомcode_object
.Примечание
Встроенные функции
globals()
иlocals()
возвращают текущий глобальный и локальный словарь соответственно, которые могут быть полезны для передачи в качестве второго и третьего аргументаexec()
.Примечание
Стандартные locals действуют так, как описано для функции
locals()
ниже: не следует пытаться вносить изменения в словарь locals по умолчанию. Передайте явный словарь locals, если вам нужно увидеть влияние кода на locals после возврата функцииexec()
.Изменено в версии 3.11: Добавлен параметр закрытие.
- filter(function, iterable)¶
Создайте итератор из тех элементов iterable, для которых function имеет значение true. iterable может быть либо последовательностью, контейнером, поддерживающим итерацию, либо итератором. Если значение function равно
None
, то предполагается, что функция identity, то есть все элементы iterable, которые являются ложными, удаляются.Обратите внимание, что
filter(function, iterable)
эквивалентно генераторному выражению(item for item in iterable if function(item))
, если функция не равнаNone
, и(item for item in iterable if item)
, если функция равнаNone
.Смотрите
itertools.filterfalse()
для дополнительной функции, которая возвращает элементы iterable, для которых function имеет значение false.
- class float(x=0.0)¶
Возвращает число с плавающей запятой, построенное из числа или строки x.
Если аргумент является строкой, он должен содержать десятичное число, необязательно предваряемое знаком и необязательно заключенное в пробел. Необязательным знаком может быть
'+'
или'-'
; знак'+'
не влияет на получаемое значение. Аргументом также может быть строка, представляющая 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") ["+" | "-"]digitpart
floatnumber ::= number [exponent
] floatvalue ::= [sign
] (floatnumber
|infinity
|nan
)Регистр не имеет значения, поэтому, например, «inf», «Inf», «INFINITY» и «Бесконечность» - все это приемлемые варианты написания для положительной бесконечности.
В противном случае, если аргументом является целое число или число с плавающей запятой, возвращается число с плавающей запятой с тем же значением (в пределах точности с плавающей запятой в Python). Если аргумент находится за пределами диапазона значений с плавающей запятой в Python, будет поднят
OverflowError
.Для общего объекта Python
x
,float(x)
делегируется значениеx.__float__()
. Если значение__float__()
не определено, то оно возвращается к значению__index__()
.Если аргумент не задан, возвращается
0.0
.Примеры:
>>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf
Тип float описан в разделе Числовые типы — int, float, complex.
Изменено в версии 3.6: Допускается группировка цифр с подчеркиванием, как в кодовых литералах.
Изменено в версии 3.7: x теперь является параметром только для определения местоположения.
Изменено в версии 3.8: Возвращается к значению
__index__()
, если значение__float__()
не определено.
- format(value, format_spec='')¶
Преобразуйте значение в «форматированное» представление, управляемое 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
. *имя * не обязательно должно быть идентификатором Python (см.setattr()
).Примечание
Поскольку private name mangling происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы получить его с помощью
getattr()
.
- globals()¶
Возвращает словарь, реализующий текущее пространство имен модуля. Для кода внутри функций это значение устанавливается при определении функции и остается неизменным независимо от того, где вызывается функция.
- hasattr(object, name)¶
Аргументами являются объект и строка. Результатом будет
True
, если строка является именем одного из атрибутов объекта,False
, если нет. (Это реализуется путем вызоваgetattr(object, name)
и проверки того, вызывает ли этоAttributeError
или нет.)
- hash(object)¶
Возвращает хэш-значение объекта (если оно у него есть). Хэш-значения - это целые числа. Они используются для быстрого сравнения словарных ключей во время поиска по словарю. Числовые значения, которые сравниваются равными, имеют одинаковое хэш-значение (даже если они разного типа, как в случае с 1 и 1.0).
Примечание
Для объектов с пользовательскими методами
__hash__()
обратите внимание, чтоhash()
усекает возвращаемое значение в зависимости от разрядности хост-компьютера.
- help()¶
- help(request)
Вызовите встроенную справочную систему. (Эта функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная справочная система запускается на консоли интерпретатора. Если аргументом является строка, то строка ищется как название модуля, функции, класса, метода, ключевого слова или раздела документации, и на консоли выводится страница справки. Если аргументом является объект любого другого типа, создается страница справки по объекту.
Обратите внимание, что если при вызове
help()
в списке параметров функции появляется косая черта(/), это означает, что параметры, предшествующие косой черте, являются позиционными. Для получения дополнительной информации см. the FAQ entry on positional-only parameters.Эта функция добавляется во встроенное пространство имен модулем
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: Это адрес объекта в памяти.
Создает auditing event
builtins.id
с аргументомid
.
- input()¶
- input(prompt)
Если присутствует аргумент prompt, он записывается в стандартный вывод без завершающей новой строки. Затем функция считывает строку из входных данных, преобразует ее в строку (удаляя завершающую новую строку) и возвращает ее. Когда EOF считывается, выводится значение
EOFError
. Пример:>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
Если был загружен модуль
readline
, тоinput()
будет использовать его для предоставления сложных функций редактирования строк и хронологии.Создает auditing event
builtins.input
с аргументомprompt
.Создает auditing event
builtins.input/result
с аргументомresult
.
- class int(x=0)¶
- class int(x, base=10)
Возвращает целочисленный объект, созданный из числа или строки x, или возвращает
0
, если аргументы не заданы. Если x определяет__int__()
,int(x)
возвращаетx.__int__()
. Если x определяет__index__()
, то возвращаетx.__index__()
. Если x определяет__trunc__()
, то возвращаетx.__trunc__()
. Для чисел с плавающей запятой это значение сокращается до нуля.Если x не является числом или если задано значение base, то x должно быть строкой, экземпляром
bytes
илиbytearray
, представляющим целое число в системе счисления base. Необязательно, перед строкой может быть+
или-
(без пробела), начальные нули, окруженные пробелом, и одиночные символы подчеркивания, перемежающиеся цифрами.Строка целых чисел с основанием n содержит цифры, каждая из которых представляет значение от 0 до n-1. Значения 0-9 могут быть представлены любой десятичной цифрой в кодировке Unicode. Значения от 10 до 35 могут быть представлены от
a
доz
(или отA
доZ
). Значение по умолчанию равно 10. Допустимыми основаниями являются 0 и 2-36. Строки с базовыми значениями-2, -8 и -16 могут иметь необязательный префикс0b
/0B
,0o
/0O
, или0x
/0X
, как и в случае с целыми литералами в коде. Для основания 0 строка интерпретируется аналогично integer literal in code в том смысле, что фактическое основание равно 2, 8, 10 или 16, как определено префиксом. Основание 0 также запрещает начальные нули:int('010', 0)
недопустимо, в то время какint('010')
иint('010', 8)
допустимы.Тип integer описан в разделе Числовые типы — int, float, complex.
Изменено в версии 3.4: Если base не является экземпляром
int
, а объект base имеет методbase.__index__
, этот метод вызывается для получения целого числа для base. В предыдущих версиях использовалосьbase.__int__
вместоbase.__index__
.Изменено в версии 3.6: Допускается группировка цифр с подчеркиванием, как в кодовых литералах.
Изменено в версии 3.7: x теперь является параметром только для определения местоположения.
Изменено в версии 3.8: Возвращается к значению
__index__()
, если значение__int__()
не определено.Изменено в версии 3.11: Делегирование
__trunc__()
устарело.Изменено в версии 3.11:
int
ввод строк и их представление могут быть ограничены, чтобы избежать атак типа «отказ в обслуживании». ЗначениеValueError
возникает при превышении предела при преобразовании строки x вint
или при преобразованииint
в строку, превышающем предел. Смотрите документацию по integer string conversion length limitation.
- isinstance(object, classinfo)¶
Возвращает
True
, если аргумент object является экземпляром аргумента classinfo или его подкласса (прямого, косвенного или virtual). Если object не является объектом заданного типа, функция всегда возвращаетFalse
. Если classinfo представляет собой кортеж типа objects (или, рекурсивно, другие подобные кортежи) или Тип соединения из нескольких типов, вернитеTrue
, если object является экземпляром любого из типов. Если classinfo не является типом или набором типов и таких кортежей, генерируется исключениеTypeError
.TypeError
может не генерироваться для недопустимого типа, если предыдущая проверка прошла успешно.Изменено в версии 3.10: classinfo может быть Тип соединения.
- issubclass(class, classinfo)¶
Возвращает
True
, если class является подклассом (прямым, косвенным или virtual) classinfo. Класс считается собственным подклассом. classinfo может быть кортежем объектов класса (или, рекурсивно, другими такими кортежами) или Тип соединения, и в этом случае возвращаетсяTrue
, если class является подклассом любой записи в classinfo. В любом другом случае возникает исключениеTypeError
.Изменено в версии 3.10: classinfo может быть Тип соединения.
- iter(object)¶
- iter(object, sentinel)
Возвращает объект iterator. Первый аргумент интерпретируется по-разному в зависимости от наличия второго аргумента. Без второго аргумента object должен быть объектом коллекции, который поддерживает протокол iterable (метод
__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)¶
Возвращает итератор, который применяет function к каждому элементу iterable, выдавая результаты. Если передаются дополнительные аргументы iterables, function должна принимать такое количество аргументов и применяться к элементам из всех iterables параллельно. При использовании нескольких итераций итератор останавливается, когда заканчивается самая короткая итерация. Для случаев, когда входные данные функции уже упорядочены в кортежи аргументов, смотрите
itertools.starmap()
.
- max(iterable, *, key=None)¶
- max(iterable, *, default, key=None)
- max(arg1, arg2, *args, key=None)
Возвращает самый большой элемент в iterable или самый большой из двух или более аргументов.
Если указан один позиционный аргумент, он должен быть iterable. Возвращается самый большой элемент в итерируемой таблице. Если указаны два или более позиционных аргумента, возвращается самый большой из позиционных аргументов.
Есть два необязательных аргумента, связанных только с ключевыми словами. Аргумент key определяет функцию упорядочивания с одним аргументом, подобную той, которая используется для
list.sort()
. Аргумент default определяет объект, который должен быть возвращен, если предоставленная итерируемая строка пуста. Если итерируемая строка пуста и значение default не указано, генерируется значениеValueError
.Если количество элементов максимально, функция возвращает первый попавшийся. Это согласуется с другими инструментами сохранения стабильности сортировки, такими как
sorted(iterable, key=keyfunc, reverse=True)[0]
иheapq.nlargest(1, iterable, key=keyfunc)
.Изменено в версии 3.4: Добавлен параметр default, предназначенный только для ключевых слов.
Изменено в версии 3.8: Ключом *может быть
None
.
- class memoryview(object)
Возвращает объект «представление в памяти», созданный на основе заданного аргумента. Дополнительную информацию смотрите в разделе Виды памяти.
- min(iterable, *, key=None)¶
- min(iterable, *, default, key=None)
- min(arg1, arg2, *args, key=None)
Возвращает наименьший элемент в iterable или наименьший из двух или более аргументов.
Если указан один позиционный аргумент, он должен быть равен iterable. Возвращается наименьший элемент в итерируемой таблице. Если указаны два или более позиционных аргумента, возвращается наименьший из позиционных аргументов.
Есть два необязательных аргумента, связанных только с ключевыми словами. Аргумент key определяет функцию упорядочивания с одним аргументом, подобную той, которая используется для
list.sort()
. Аргумент default определяет объект, который должен быть возвращен, если предоставленная итерируемая строка пуста. Если итерируемая строка пуста и значение default не указано, генерируется значениеValueError
.Если несколько элементов минимальны, функция возвращает первый попавшийся. Это согласуется с другими инструментами сохранения стабильности сортировки, такими как
sorted(iterable, key=keyfunc)[0]
иheapq.nsmallest(1, iterable, key=keyfunc)
.Изменено в версии 3.4: Добавлен параметр default, предназначенный только для ключевых слов.
Изменено в версии 3.8: Ключом *может быть
None
.
- next(iterator)¶
- next(iterator, default)
Извлеките следующий элемент из iterator, вызвав его метод
__next__()
. Если задано значение default, оно возвращается, если итератор исчерпан, в противном случае вызывается значениеStopIteration
.
- class object¶
Возвращает новый безликий объект.
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 object. Если файл открыть не удается, выводится
OSError
. Дополнительные примеры использования этой функции приведены в Чтение и запись файлов.file - это path-like object, указывающий путь (абсолютный или относительный к текущему рабочему каталогу) к файлу, который нужно открыть, или целочисленный файловый дескриптор файла, который нужно обернуть. ((Если задан файловый дескриптор, он закрывается при закрытии возвращаемого объекта ввода-вывода, если только для параметра 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
, причем байты были сначала декодированы с использованием зависящей от платформы кодировки или с использованием указанной * кодировки* если дано.Примечание
Python не зависит от представления базовой операционной системы о текстовых файлах; вся обработка выполняется самим Python и, следовательно, не зависит от платформы.
буферизация - это необязательное целое число, используемое для настройки политики буферизации. Введите 0, чтобы отключить буферизацию (разрешена только в двоичном режиме), 1, чтобы выбрать буферизацию строк (используется только при записи в текстовом режиме), и целое число > 1, чтобы указать размер фрагмента буфера фиксированного размера в байтах. Обратите внимание, что указание размера буфера таким образом применимо для двоичного буферизованного ввода-вывода, но
TextIOWrapper
(т.е. файлы, открытые с помощьюmode='r+'
) будут иметь другую буферизацию. Чтобы отключить буферизацию вTextIOWrapper
, попробуйте использовать флагwrite_through
дляio.TextIOWrapper.reconfigure()
. Если аргумент «буферизация» не задан, политика буферизации по умолчанию работает следующим образом:Двоичные файлы буферизуются в виде блоков фиксированного размера; размер буфера выбирается с помощью эвристики, которая пытается определить «размер блока» базового устройства и возвращается к
io.DEFAULT_BUFFER_SIZE
. Во многих системах длина буфера обычно составляет 4096 или 8192 байта.В «интерактивных» текстовых файлах (файлах, для которых
isatty()
возвращаетTrue
) используется буферизация строк. В других текстовых файлах используется политика, описанная выше для двоичных файлов.
encoding - это название кодировки, используемой для декодирования или кодирования файла. Это значение следует использовать только в текстовом режиме. Кодировка по умолчанию зависит от платформы (независимо от того, что возвращает
locale.getencoding()
), но можно использовать любую text encoding, поддерживаемую Python. Список поддерживаемых кодировок приведен в модулеcodecs
.errors — это необязательная строка, которая указывает, как следует обрабатывать ошибки кодирования и декодирования - ее нельзя использовать в двоичном режиме. Доступны различные стандартные средства обработки ошибок (перечислены в разделе Обработчики ошибок), хотя допустимым также является любое имя средства обработки ошибок, зарегистрированное в
codecs.register_error()
. Стандартные имена включают:'strict'
для создания исключенияValueError
в случае ошибки кодирования. Значение по умолчаниюNone
имеет тот же эффект.'ignore'
игнорирует ошибки. Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных.'replace'
приводит к вставке заменяющего маркера (например,'?'
) там, где имеются искаженные данные.'surrogateescape'
будет представлять любые неверные байты в виде младших суррогатных кодовых единиц в диапазоне от U+DC80 до U+DCFF. Эти суррогатные кодовые единицы затем будут преобразованы обратно в те же байты, когда при записи данных будет использован обработчик ошибокsurrogateescape
. Это полезно для обработки файлов в неизвестной кодировке.'xmlcharrefreplace'
поддерживается только при записи в файл. Символы, не поддерживаемые данной кодировкой, заменяются соответствующей XML-символьной ссылкой&#nnn;
.'backslashreplace'
заменяет искаженные данные escape-последовательностями с обратной косой чертой в Python.'namereplace'
(также поддерживается только при записи) заменяет неподдерживаемые символы на\N{...}
escape-последовательности.
новая строка определяет способ разбора символов новой строки из потока. Это может быть
None
,''
,'\n'
,'\r'
, и'\r\n'
. Это работает следующим образом:При чтении входных данных из потока, если значение newline равно
None
, включается универсальный режим перевода строк. Строки во входных данных могут заканчиваться на'\n'
,'\r'
, или'\r\n'
, и они преобразуются в'\n'
перед возвращением вызывающей стороне. Если значение равно''
, включается универсальный режим перевода строк, но окончания строк возвращаются вызывающей стороне непереведенными. Если у него есть какие-либо другие допустимые значения, входные строки завершаются только заданной строкой, и окончание строки возвращается вызывающей стороне непереведенным.При записи выходных данных в поток, если новая строка равна
None
, любые введенные символы'\n'
переводятся в системный разделитель строк по умолчанию,os.linesep
. Если новая строка имеет значение''
или'\n'
, перевод не выполняется. Если новая строка имеет любое другое допустимое значение, любые введенные символы'\n'
переводятся в данную строку.
Если значение closefd равно
False
и был указан файловый дескриптор, а не имя файла, базовый файловый дескриптор будет оставаться открытым при закрытии файла. Если указано имя файла closefd, оно должно бытьTrue
(по умолчанию); в противном случае будет выдана ошибка.Пользовательский открыватель можно использовать, передав вызываемый параметр как открыватель. Базовый файловый дескриптор для файлового объекта затем получается при вызове открывателя с помощью (file, flags). opener должен возвращать дескриптор открытого файла (передача
os.open
в качестве opener приводит к функциональности, аналогичной передачеNone
).Только что созданный файл имеет значение non-inheritable.
В следующем примере используется параметр 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) # don't leak a file descriptor
Тип file object, возвращаемый функцией
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
.Создает auditing event
open
с аргументамиfile
,mode
,flags
.Аргументы
mode
иflags
могли быть изменены или выведены из исходного вызова.Изменено в версии 3.3:
Был добавлен параметр открывалка.
Был добавлен режим
'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)¶
Учитывая строку, представляющую один символ Юникода, верните целое число, представляющее кодовую точку этого символа в Юникоде. Например,
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 и выдается результат с плавающей точкой. Например,pow(10, 2)
возвращает100
, аpow(10, -2)
возвращает0.01
. Для отрицательного основания типаint
илиfloat
и нецелого показателя степени выдается сложный результат. Например,pow(-9, 0.5)
возвращает значение, близкое к3j
.Для
int
операндов base и 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)¶
Выводите объекты в текстовый поток file, разделяя их символом sep, за которым следует end. В качестве аргументов ключевых слов должны быть указаны sep, end, file и flush, если они присутствуют.
Все аргументы, не связанные с ключевыми словами, преобразуются в строки типа
str()
и записываются в поток, разделенные символом sep, за которым следует символ end. И sep, и end должны быть строками; они также могут бытьNone
, что означает использование значений по умолчанию. Если не заданы объекты,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)¶
Возвращает атрибут свойства.
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
- средство удаления.Если c является экземпляром C,
property()
вызовет средство получения, decorator вызовет средство установки, а - средство удаления.class Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Get the current voltage.""" return self._voltage
Если c является экземпляром C,
@property
вызовет средство получения,voltage()
вызовет средство установки, а - средство удаления.- @getter¶
- @setter¶
- @deleter¶
У объекта property есть
getter
,setter
, иdeleter
методы, используемые в качестве декораторов, которые создают копию свойства с соответствующей функцией доступа, установленной на функцию decorated. Это лучше всего объяснить на примере:class C: def __init__(self): self._x = None @property def x(self): """I'm the 'x' property.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
У объекта property есть
x
, , и методы, используемые в качестве декораторов, которые создают копию свойства с соответствующей функцией доступа, установленной на функцию decorated. Это лучше всего объяснить на примере:Возвращаемый объект property также имеет атрибуты
fget
,fset
, иfdel
, соответствующие аргументам конструктора.
Изменено в версии 3.5: Строки документации объектов property теперь доступны для записи.
- class range(stop)
- class range(start, stop, step=1)
Вместо того, чтобы быть функцией,
range
на самом деле является неизменяемым типом последовательности, как описано в Диапазоны и Типы последовательностей — 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)¶
iterator`Этот класс :meth:`~object.__reversed__ имеет
__len__()
пользовательское__getitem__()
представление,0
которое может быть оценено:
- round(number, ndigits=None)¶
Возвращает число, округленное с точностью до 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
. Это не ошибка: это результат того, что большинство десятичных дробей не могут быть представлены точно в виде числа с плавающей точкой. Дополнительную информацию смотрите в Арифметика с плавающей запятой: проблемы и ограничения.
- class set
- class set(iterable)
Возвращает новый
set
объект, необязательно с элементами, взятыми из iterable.set
- это встроенный класс. Документацию об этом классе смотрите вset
и Установленные типы — set, frozenset.Возвращает новый
frozenset
объект, необязательно с элементами, взятыми из iterable.list
- это встроенный класс. Документацию об этом классе смотрите вtuple
иdict
collections
.
- setattr(object, name, value)¶
Это аналог
getattr()
. Аргументами являются объект, строка и произвольное значение. Строка может содержать имя существующего атрибута или нового атрибута. Функция присваивает значение атрибуту, если объект это позволяет. Например,setattr(x, 'foobar', 123)
эквивалентноx.foobar = 123
.name не обязательно должен быть идентификатором Python, как определено в Идентификаторы и ключевые слова, если только объект не решит применить это, например, в пользовательском
__getattribute__()
или с помощью__slots__
. Атрибут, имя которого не является идентификатором, не будет доступен с использованием точечной записи, но доступен черезgetattr()
и т.д..Примечание
Поскольку private name mangling происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на
setattr()
.
- class slice(stop)¶
- class slice(start, stop, step=None)
Поскольку slice происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на
range(start, stop, step)
None
.- start¶
- stop¶
- step¶
Поскольку
start
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его наstop
step
.
Поскольку
a[start:stop:step]
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его наa[start:stop, i]
itertools.islice()
iterator .
- sorted(iterable, /, *, key=None, reverse=False)¶
Поскольку происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .
Поскольку происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .
Поскольку
key=str.lower
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его наNone
.Поскольку
True
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .Поскольку
functools.cmp_to_key()
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .Поскольку
sorted()
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .Поскольку
<
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на__lt__()
PEP 8 rich comparisonsmax()
__gt__()
.Поскольку Сортировка, КАК происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .
- @staticmethod¶
Поскольку происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .
Поскольку происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .
class C: @staticmethod def f(arg1, arg2, argN): ...
Поскольку
@staticmethod
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на decorator Определения функций .Поскольку
C.f()
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его наC().f()
f()
.Поскольку
classmethod()
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .Поскольку
staticmethod
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .def regular_function(): ... class C: method = staticmethod(regular_function)
Поскольку Иерархия стандартных типов происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .
Изменено в версии 3.10: Поскольку
__module__
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на__name__
__qualname__
__doc__
__annotations__
__wrapped__
.
- class str(object='')
- class str(object=b'', encoding='utf-8', errors='strict')
Поскольку
str
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его наstr()
.Поскольку
str
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на class Тип текстовой последовательности — str .
- sum(iterable, /, start=0)¶
Поскольку происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .
Поскольку
sum()
происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на''.join(sequence)
math.fsum()
itertools.chain()
.Изменено в версии 3.8: Поскольку происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .
- class super¶
- class super(type, object_or_type=None)
Поскольку происходит во время компиляции, необходимо вручную изменить имя private attributes (атрибуты с двумя начальными символами подчеркивания), чтобы установить его на .
Параметр object_or_type определяет method resolution order для поиска. Поиск начинается с класса сразу после type.
Параметр object_or_type определяет
__mro__
для поиска.D -> B -> C -> A -> object
ПоискB
начинаетсяsuper()
с классаC -> A -> object
сразу после type.Параметр object_or_type определяет
__mro__
для поиска.getattr()
Поискsuper()
начинается с класса сразу после type.Параметр object_or_type определяет
isinstance(obj, type)
для поиска.issubclass(type2, type)
Поиск начинается с класса сразу после type.Существует два типичных варианта использования super. В иерархии классов с одиночным наследованием super может использоваться для ссылки на родительские классы без их явного присвоения имен, что делает код более удобным для сопровождения. Это использование очень похоже на использование super в других языках программирования.
Существует два типичных варианта использования super. В иерархии классов с одиночным наследованием super может использоваться для ссылки на родительские классы без их явного присвоения имен, что делает код более удобным для сопровождения. Это использование очень похоже на использование super в других языках программирования.
Для обоих вариантов использования типичный вызов суперкласса выглядит следующим образом:
class C(B): def method(self, arg): super().method(arg) # This does the same thing as: # super(C, self).method(arg)
super`Для обоих :term:`descriptors
вариантов использования типичный вызов суперкласса выглядит следующим образом:Обратите внимание, что
super()
реализован как часть процесса привязки для явного точечного поиска атрибутов, такого какsuper().__getitem__(name)
. Для этого используется собственный метод__getattribute__()
для поиска классов в предсказуемом порядке, который поддерживает совместное множественное наследование. Соответственно,super()
не определено для неявного поиска с использованием инструкций или операторов, таких какsuper()[name]
.Также обратите внимание, что, помимо формы с нулевым аргументом,
super()
не ограничивается использованием внутренних методов. Форма с двумя аргументами точно определяет аргументы и содержит соответствующие ссылки. Форма с нулевым аргументом работает только внутри определения класса, поскольку компилятор заполняет необходимые данные для корректного извлечения определяемого класса, а также для доступа к текущему экземпляру для обычных методов.Практические рекомендации по созданию совместных классов с использованием
super()
см. в разделе guide to using super().
- class tuple
- class tuple(iterable)
Вместо того, чтобы быть функцией,
tuple
на самом деле является неизменяемым типом последовательности, как описано в Кортежи и Типы последовательностей — list, tuple, range.
- class type(object)¶
- class type(name, bases, dict, **kwds)
С помощью одного аргумента возвращает тип object. Возвращаемое значение - это тип 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')
:func:`zip`Пример:
Другой способ представить
zip()
заключается в том, что он преобразует строки в столбцы, а столбцы - в строки. Это аналогично transposing a matrix.Другой способ представить
zip()
заключается в том, что он преобразует строки в столбцы, а столбцы - в строки. Это аналогичноfor
list
.Другой способ представить
zip()
заключается в том, что он преобразует строки в столбцы, а столбцы - в строки. Это аналогично .Другой способ представить
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
.уровень указывает, следует ли использовать абсолютный или относительный импорт.
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
теперь игнорируется.
Сноски