Встроенные функции¶
У Python интерпретатора есть ряд встроенных в него функций и типов, которые доступны всегда. Они перечислены далее в алфавитном порядке.
-
abs
(x)¶ Возвращает абсолютное значение числа. Аргумент может быть целым числом или числом с плавающей запятой. Если аргумент — комплексное число, возвращает его амплитуду. Если x определяет
__abs__()
,abs(x)
возвращаетx.__abs__()
.
-
all
(iterable)¶ Возвращает
True
, если все элементы iterable истинны (или если итерация пуста). Эквивалентно:def all(iterable): for element in iterable: if not element: return False return True
-
any
(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])¶ Возвращает логическое значение, например
True
илиFalse
. x конвертируется с использованием стандартной процедуры проверки истинности. Если x ложно или пропущено, возвращается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()
автоматически вызовет её, позволяя вам перейти в выбранный отладчик.Вызывает событие аудита
builtins.breakpoint
с аргументомbreakpointhook
.Добавлено в версии 3.7.
-
class
bytearray
([source[, encoding[, errors]]]) Возвращает новый массив байтов. Класс
bytearray
представляет собой изменяемую последовательность целых чисел в диапазоне 0 <= x < 256. У него большинство обычных методов изменяемых последовательностей, описанных в Типы изменяемых последовательностей, а также большинство методов, у которых типbytes
, см. Байты и операции с байтовыми массивами.Необязательный параметр source можно использовать для инициализации массива несколькими способами:
- Если это string, вы также должны указать параметры encoding (и,
необязательно, errors); Затем
bytearray()
преобразует строку в байты, используяstr.encode()
. - Если это integer, У массива будет такой размер и он будет инициализирован нулевыми байтами.
- Если это объект, соответствующий интерфейсу буфера, то для инициализации массива байтов будет использоваться буфер объекта, доступный только для чтения.
- Если это iterable, должен быть итерацией целых чисел в диапазоне
0 <= x < 256
, которые используются в качестве начального содержимого массива.
Без аргумента создаётся массив размером 0.
См. также Типы двоичных последовательностей — bytes, bytearray, memoryview и Объекты Bytearray.
- Если это string, вы также должны указать параметры encoding (и,
необязательно, errors); Затем
-
class
bytes
([source[, encoding[, errors]]]) Возвращает новый объект «bytes», который представляет собой неизменяемую последовательность целых чисел в диапазоне
0 <= x < 256
.bytes
являются неизменной версиейbytearray
— у него те же немутантные методы и такое же поведение индексации и срезов.Соответственно, аргументы конструктора интерпретируются как
bytearray()
.Объекты байтов также можно создать с помощью литералов, см. Строковые и байтовые литералы.
См. также Типы двоичных последовательностей — bytes, bytearray, memoryview, Объекты байтов и Байты и операции с байтовыми массивами.
-
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 C: @classmethod def f(cls, arg1, arg2, ...): ...
Форма
@classmethod
является функцией декоратором; подробности см. в Определения функции.Метод класса может быть вызван либо для класса (например,
C.f()
), либо для экземпляра (например,C().f()
). Экземпляр игнорируется, за исключением его класса. Если метод класса вызывается для производного класса, объект производного класса передаётся как подразумеваемый первый аргумент.Методы класса отличаются от статических методов C++ или Java. Если они вам нужны, см.
staticmethod()
.Дополнительные сведения о методах класса см. в Стандартная иерархия типов.
-
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 управляют тем, как будущие операторы влияют на компиляцию source. Если ни один из них не присутствует (или оба равны нулю), код компилируется с теми будущими операторами, которые действуют в коде, вызывающем
compile()
. Если задан аргумент flags, а dont_inherit не равен (или равен нулю), то будущие операторы, указанные аргументом flags, используются в дополнение к тем, которые будут использоваться в любом случае. Если dont_inherit — ненулевое целое число, тогда аргумент flags является им — будущие операторы, действующие вокруг вызова компиляции, игнорируются.Будущие операторы задаются битами, которые можно объединить побитовым ИЛИ, чтобы указать несколько операторов. Битовое поле, необходимое для указания данной функции, можно найти как атрибут
compiler_flag
в экземпляре_Feature
в модуле__future__
.Необязательный аргумент flags также определяет, разрешено ли скомпилированному источнику содержать высокоуровневое
await
,async for
иasync with
. Когда битast.PyCF_ALLOW_TOP_LEVEL_AWAIT
установлен, у объекта кода возврата будетCO_COROUTINE
, установленный вco_code
, и может интерактивно выполниться черезawait eval(code_object)
.Аргумент optimize указывает уровень оптимизации компилятора; значение по умолчанию
-1
выбирает уровень оптимизации интерпретатора в соответствии с параметрами-O
. Явные уровни:0
(без оптимизации;__debug__
— истина),1
(ассерты удаляются,__debug__
— ложно) или2
(строки документации также удаляются).Функция вызывает
SyntaxError
, если скомпилированный источник ошибочен иValueError
, если источник содержит null байты.Если вы хотите проанализировать код Python в его представлении AST, см.
ast.parse()
.Вызывает событие аудита
compile
с аргументамиsource
иfilename
. Событие также может вызваться неявной компиляцией.Примечание
При компиляции строки с многострочным кодом в режиме
'single'
или'eval'
ввод должен завершаться хотя бы одним символом новой строки. Это сделано для облегчения обнаружения неполных и полных операторов в модулеcode
.Предупреждение
Возможен сбой интерпретатора Python с достаточно большой/сложной строкой при компиляции в AST объект из-за ограничений глубины стека в компиляторе Python AST.
Изменено в версии 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
([real[, imag]])¶ Возвращает комплексное число со значением 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
.
-
class
dict
(**kwarg) -
class
dict
(mapping, **kwarg) -
class
dict
(iterable, **kwarg) Создать новый словарь. Объект
dict
— класс словаря. См. документацию по этому классу вdict
и Типы сопоставления — dict.Для других контейнеров см. встроенные классы
list
,set
иtuple
, а также модульcollections
.
-
dir
([object])¶ Без аргументов возвращает список имён в текущей локальной области. С аргументом попытается вернуть список допустимых атрибутов для данного объекта.
Если у объекта есть метод с именем
__dir__()
, этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, реализующим пользовательскую функцию__getattr__()
или__getattribute__()
, настраивать способ сообщенияdir()
своих атрибутов.Если объект не предоставляет
__dir__()
, функция изо всех сил пытается собрать информацию из атрибута__dict__
объекта, если он определён, и из объекта его типа. Результирующий список не обязательно является полным и может быть неточным, если у объекта есть настраиваемый__getattr__()
.Механизм
dir()
по умолчанию ведёт себя по-разному с разными типами объектов, поскольку он пытается произвести наиболее подходящую, а не полную информацию:- Если объект является объектом модуля, список содержит имена атрибутов модуля.
- Если объект является type объектом или класса, список содержит имена его атрибутов и рекурсивно атрибутов его предков.
- В противном случае список содержит имена атрибутов объекта, имена атрибутов его класса и рекурсивно атрибуты родительских классов его класса.
Полученный список отсортирован по алфавиту. Например:
>>> import struct >>> dir() # отображение имён в пространстве имён модулей # doctest: +SKIP ['__builtins__', '__name__', 'struct'] >>> dir(struct) # показать имена в модуле struct # doctest: +SKIP ['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)¶ Возвращает перечисляемый объект. iterable должен быть последовательностью, итератором или каким-либо другим объектом, поддерживающим итерацию. Метод
__next__()
итератора, возвращенныйenumerate()
, возвращает кортеж, содержащий счётчик (start, который по умолчанию равен 0) и значения, полученные в результате итерации по iterable.>>> seasons = ['Весна', 'Лето', 'Осень', 'Зима'] >>> list(enumerate(seasons)) [(0, 'Весна'), (1, 'Лето'), (2, 'Осень'), (3, 'Зима')] >>> list(enumerate(seasons, start=1)) [(1, 'Весна'), (2, 'Лето'), (3, 'Осень'), (4, 'Зима')]
Эквивалентно:
def enumerate(sequence, start=0): n = start for elem in sequence: yield n, elem n += 1
-
eval
(expression[, globals[, locals]])¶ expression — строка и необязательные глобальные и локальные переменные. Если предоставляется, globals должен быть словарём. Если предоставлено locals, может быть любым отображаемым объектом.
Аргумент expression анализируется и вычисляется как Python выражение (технически говоря, список условий) с использованием словарей globals и locals в качестве глобального и локального пространства имён. Если словарь globals присутствует и не содержит значения для ключа
__builtins__
, ссылка на словарь встроенного модуляbuiltins
вставляется под этим ключом перед анализом expression. Это означает, что у expression обычно полный доступ к стандартному модулюbuiltins
, и распространяются ограничение среды. Если словарь 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[, locals]])¶ Функция поддерживает динамическое выполнение Python кода. object должен быть либо строкой, либо объектом кода. Если это строка, она анализируется как множество операторов Python, которая затем выполняется (если не возникает синтаксическая ошибка). [1] Если это объект кода, он просто выполняется. Во всех случаях ожидается, что выполняемый код будет правильным файловым вводом (см. раздел «Файловый ввод» в справочном руководстве). Имейте в виду, что операторы
nonlocal
,yield
иreturn
не могут использоваться вне определений функций даже в контексте кода, переданного в функциюexec()
. Возвращаемое значение —None
.Во всех случаях, если необязательные части пропущены, код выполняется в текущей области. Если предоставляется только globals, это должен быть словарь (а не подкласс словаря), который будет использоваться как для глобальных, так и для локальных переменных. Если заданы globals и locals, они используются для глобальных и локальных переменных соответственно. Если предоставлено, locals может быть любым объектом отображения. Помните, что на уровне модуля глобальные и локальные переменные — один и тот же словарь. Если exec получает два отдельных объекта как globals и locals, код будет выполнен так, как если бы он был встроен в определение класса.
Если словарь globals не содержит значения для ключа
__builtins__
, под этим ключом вставляется ссылка на словарь встроенного модуляbuiltins
. Таким образом, вы можете контролировать, какие встроенные функции доступны для исполняемого кода, вставив свой словарь__builtins__
в globals перед его передачей вexec()
.Вызывает событие аудита
exec
с объектом кода в качестве аргумента. Также могут возникать события компиляции кода.
-
filter
(function, iterable)¶ Создать итератор из тех элементов iterable, для которых function возвращает true. iterable может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если function —
None
, предполагается функция идентификации, т. е. все элементы 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])¶ Возвращает число с плавающей запятой, составленное из числа или строки x.
Если аргумент является строкой, он должен содержать десятичное число, необязательно предваренное знаком и необязательно окруженное пробелом. Необязательный знак может быть
'+'
или'-'
; знак'+'
не влияет на полученное значение. Аргументом также может быть строка, представляющая NaN (не число), либо положительную или отрицательную бесконечность. Точнее, ввод должен соответствовать следующей грамматике после удаления начальных и конечных пробельных символов:sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" numeric_value ::=
floatnumber
|infinity
|nan
numeric_string ::= [sign
]numeric_value
Здесь
floatnumber
— форма литерала Python с плавающей запятой, описанная в Литералы с плавающей запятой. Регистр неважен, поэтому, например, «inf», «Inf», «INFINITY» и «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])¶ Преобразовать 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]) Возвращает новый объект
frozenset
, необязательно с элементами, взятыми из iterable.frozenset
— встроенный класс. См. документацию по этому классу вfrozenset
и Типы множества — set, frozenset.Для других контейнеров см. встроенные классы
set
,list
,tuple
иdict
, а также модульcollections
.
-
getattr
(object, name[, default])¶ Возвращает значение именуемого атрибута object. name должен быть строкой. Если строка является именем одного из атрибутов объекта, результатом будет значение этого атрибута. Например,
getattr(x, 'foobar')
эквивалентенx.foobar
. Если именованный атрибут не существует, возвращается default, если он указан, в противном случае возникаетAttributeError
.
-
globals
()¶ Возвращает словарь, представляющий текущую глобальную таблицу символов. Это всегда словарь текущего модуля (внутри функции или метода это модуль, в котором он определён, а не модуль, из которого он вызывается).
-
hasattr
(object, name)¶ Аргументы — объект и строка. Результатом будет
True
, если строка является именем одного из атрибутов объекта, иFalse
, если нет. (Это реализуется путём вызоваgetattr(object, name)
и проверки, вызывает ли онаAttributeError
или нет.)
-
hash
(object)¶ Возвращает хеш-значение объекта (если оно есть). Значения хэша — целые числа. Они используются для быстрого сравнения ключей словаря во время поиска по словарю. Числовые значения, которые сравниваются равными, содержат одинаковое хеш-значение (даже если они относятся к разным типам, как в случае с 1 и 1.0).
Примечание
Для объектов с настраиваемыми методами
__hash__()
обратите внимание, чтоhash()
усекает возвращаемое значение в зависимости от разрядности хост-компьютера. Подробнее см.__hash__()
.
-
help
([object])¶ Вызов встроенной справочной системы. (Функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная справочная система запускается в консоли интерпретатора. Если аргумент является строкой, то строка ищется как имя модуля, функции, класса, метода, ключевого слова или раздела документации, и на консоли печатается страница справки. Если аргумент является объектом любого другого типа, для этого объекта создаётся справочная страница.
Обратите внимание: если косая черта (/) появляется в списке параметров функции при вызове
help()
, это означает, что параметры перед косой чертой являются только позиционными. Для получения дополнительной информации см. статью часто задаваемых вопросов о только позиционных параметрах.Функция добавляется во встроенное пространство имён модулем
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
([prompt])¶ Если присутствует аргумент prompt, он записывается в стандартный вывод без завершающего символа новой строки. Затем функция считывает строку из ввода, преобразует её в строку (удаляя завершающую новую строку) и возвращает её. При прочтении EOF вызывается
EOFError
. Пример:>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
Если был загружен модуль
readline
, тоinput()
будет использовать его для обеспечения подробного редактирования строк и функций истории.Перед чтением ввода вызывает событие аудита
builtins.input
с аргументомprompt
Вызывает событие аудита
builtins.input/result
с результатом после успешного чтения ввода.
-
class
int
([x])¶ -
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, причём отa
доz
(или отA
доZ
) есть значения от 10 до 35. По умолчанию base — 10. Допустимые значения: 0 и 2–36. У литералов Base-2, -8 и -16 может быть префикс0b
/0B
,0o
/0O
или0x
/0X
, как и целочисленные литералы в коде. Основание 0 означает интерпретацию точно как литерал кода, так что фактическое основание равно 2, 8, 10 или 16, и поэтому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: x теперь является только позиционным параметром.
Изменено в версии 3.8: Возвращается к
__index__()
, если__int__()
не определён.
-
isinstance
(object, classinfo)¶ Возвращает
True
, если аргумент object является экземпляром аргумента classinfo или его подкласса (прямого, косвенного или виртуально). Если object не является объектом данного типа, функция всегда возвращаетFalse
. Если classinfo является кортежем объектов типа (или рекурсивно, другими такими кортежами), возвращаетTrue
, если object является экземпляром любого из типов. Если classinfo не является типом или кортежем типов и таких кортежей, возникает исключениеTypeError
.
-
issubclass
(class, classinfo)¶ Возвращает
True
, если class является подклассом (прямым, косвенным или виртуальным) classinfo. Класс считается подклассом самого себя. classinfo может быть кортежем объектов класса, и в этом случае будет проверяться каждая запись в classinfo. В любом другом случае возникает исключениеTypeError
.
-
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)¶ Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (например, строка, байты, кортеж, список или диапазон) или коллекция (например, словарь, множество или замороженное множество).
-
class
list
([iterable]) list
— не функция, а тип изменяемой последовательности, как описано в Списки и Типы последовательностей — list, tuple, range.
-
locals
()¶ Обновляет и возвращает словарь, представляющий текущую локальную таблицу символов.
locals()
возвращает свободные переменные, когда вызывается в функциональных блоках, но не в блоках классов. Обратите внимание, что на уровне модуляlocals()
иglobals()
— это один и тот же словарь.Примечание
Содержание этого словаря не должно изменяться; изменения не могут повлиять на значения локальных и свободных переменных, используемых интерпретатором.
-
map
(function, iterable, ...)¶ Возвращает итератор, который применяет function к каждому элементу iterable, отдавая результаты. Если передаются дополнительные аргументы iterable, function должна принимать это количество аргументов и применяться к элементам из всех итераций параллельно. При нескольких итерациях итератор останавливается, когда исчерпывается самая короткая итерация. Для случаев, когда входные данные функции уже организованы в кортежи аргументов, см.
itertools.starmap()
.
-
max
(iterable, *[, key, default])¶ -
max
(arg1, arg2, *args[, key]) Возвращает наибольший элемент в итерируемом объекте или наибольший из двух или более аргументов.
Если указан один позиционный аргумент, он должен быть итерируемым. Возвращается самый большой элемент в итерируемом объекте. Если предоставлено два или более позиционных аргумента, возвращается самый большой из позиционных аргументов.
Есть два необязательных ключевых аргумента. Аргумент 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
(obj) Возвращает объект «представления памяти», созданный из данного аргумента. См. Просмотры памяти для получения дополнительной информации.
-
min
(iterable, *[, key, default])¶ -
min
(arg1, arg2, *args[, key]) Возвращает наименьший элемент в итерации или наименьший из двух или более аргументов.
Если указан один позиционный аргумент, он должен быть итерируемым. Возвращается наименьший элемент в итерируемом объекте. Если предоставлено два или более позиционных аргумента, возвращается наименьший из позиционных аргументов.
Есть два необязательных только ключевых аргумента. Аргумент 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[, 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 и возвращает соответствующий файловый объект. Если файл не открывается, вызывается
OSError
. См. дополнительные примеры использования функции в Чтение и запись файлов.file — путеподобный объект, дающий путь (абсолютный или относительный к текущему рабочему каталогу) открываемого файла или целочисленный файловый дескриптор файла, который нужно обернуть. (Если указан файловый дескриптор, он закрывается при закрытии возвращенного объекта ввода-вывода, если closefd не установлен в
False
.)mode — необязательная строка, определяющая режим, в котором открывается файл. По умолчанию это
'r'
, что означает открытие для чтения в текстовом режиме. Другие распространенные значения:'w'
для записи (очистка файла, если он уже существует),'x'
для монопольного создания и'a'
для добавления (в некоторых Unix системах означает, что всё записывается добавлением в конец файла независимо от текущей позиции поиска) . В текстовом режиме, если encoding не указан, используемая кодировка зависит от платформы: вызываетсяlocale.getpreferredencoding(False)
для получения текущей кодировки языкового стандарта. (Для чтения и записи необработанных байтов используйте двоичный режим и не указывайте encoding.) доступны следующие режимы:Символ Значение 'r'
открыт для чтения (по умолчанию) 'w'
открыт для записи, сначала очистка файла 'x'
открыт для монопольного создания, сбой, если файл уже существует 'a'
открыть для записи, добавить к концу файла, если он существует 'b'
бинарный режим 't'
текстовый режим (по умолчанию) '+'
открыт для обновления (чтение и запись) Режим по умолчанию —
'r'
(открыть для чтения текста, синоним'rt'
). Режимы'w+'
и'w+b'
открывают и очищают файл. В режимах'r+'
и'r+b'
файл открывается без очистки.Как упоминалось в Обзор, Python различает двоичный и текстовый ввод-вывод. Файлы, открытые в двоичном режиме (включая
'b'
в аргументе mode), возвращают содержимое как объектыbytes
без какого-либо декодирования. В текстовом режиме (по умолчанию или когда't'
включён в аргумент mode) содержимое файла возвращается какstr
, причём байты сначала декодируются с использованием кодировки, зависящей от платформы, или с использованием указанной encoding, если задано.Разрешён дополнительный символ режима,
'U'
, который больше не действует и считается устаревшим. Ранее он включал универсальный символ новой строки в текстовом режиме, который стал поведением по умолчанию в Python 3.0. Дополнительные сведения см. в документации параметра newline.Примечание
Python не зависит от представления текстовых файлов базовой операционной системой; вся обработка выполняется самим Python и, следовательно, не зависит от платформы.
buffering — необязательное целое число, используемое для установки политики буферизации. Передайте 0, чтобы отключить буферизацию (разрешено только в двоичном режиме), 1, чтобы выбрать буферизацию строки (можно использовать только в текстовом режиме), и целое число > 1, чтобы указать размер в байтах буфера фрагментов фиксированного размера. Если аргумент buffering не указан, политика буферизации по умолчанию работает следующим образом:
- Двоичные файлы буферизуются кусками фиксированного размера; размер буфера
выбирается с помощью эвристики, пытающейся определить «размер блока»
нижележащего устройства и возвращаясь к
io.DEFAULT_BUFFER_SIZE
. Во многих системах размер буфера обычно составляет 4096 или 8192 байта. - «Интерактивные» текстовые файлы (файлы, для которых
isatty()
возвращаетTrue
) используют буферизацию строк. Другие текстовые файлы используют политику, описанную выше для двоичных файлов.
encoding — имя кодировки, используемой для декодирования или кодирования файла. Следует использовать только в текстовом режиме. Кодировка по умолчанию зависит от платформы (независимо от того, что возвращает
locale.getpreferredencoding()
), но можно использовать любую текстовую кодировку, поддерживаемую 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{...}
.
newline управляет работой режима универсальный символ новой строки (применяется только к текстовому режиму). Может принимать значения:
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('Это будет записано в 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
с аргументамиfile
,mode
,flags
.Аргументы
mode
иflags
могли быть изменены или выведены из исходного вызова.Изменено в версии 3.3:- Добавлен параметр opener.
- Добавлен режим
'x'
. - Раньше вызывался
IOError
, теперь это псевдонимOSError
. - Теперь вызывается
FileExistsError
, если файл, открытый в режиме монопольного создания ('x'
), уже существует.
Изменено в версии 3.4:- Теперь файл не наследуется.
Устарело с версии 3.4, будет удалено в 3.9 версии.: Режим
'U'
.- Двоичные файлы буферизуются кусками фиксированного размера; размер буфера
выбирается с помощью эвристики, пытающейся определить «размер блока»
нижележащего устройства и возвращаясь к
-
ord
(c)¶ Принимает одиносимвольную строку Юникода и возвращает целое число, представляющее кодовую точку Юникода этого символа. Например,
ord('a')
возвращает целое число97
, аord('€')
(знак евро) возвращает8364
. Обратнаchr()
.
-
pow
(base, exp[, mod])¶ Возвращает base в степени exp; если присутствует mod, возвращает base в степени exp по модулю mod (вычисляется более эффективно, чем
pow(base, exp) % mod
). Форма с двумя аргументамиpow(base, exp)
эквивалентна использованию оператора возведения в степень:base**exp
.Аргументы должны быть числовыми типами. К смешанным типам операндов применяются правила приведения для двоичных арифметических операторов. Для
int
операндов у результатов тот же тип, что и операнды (после принуждения), если второй аргумент не является отрицательным; в этом случае все аргументы преобразуются в число с плавающей точкой, и выдаётся результат с плавающей точкой. Например,10**2
возвращает100
, но10**-2
возвращает0.01
.Для
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=sys.stdout, 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 истинен, поток принудительно сбрасывается.
Изменено в версии 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, "Я 'x' свойство.")
Если c является экземпляром C,
c.x
вызовет геттер,c.x = value
вызовет сеттер, аdel c.x
— делиттер.Если задано, doc будет строкой документации атрибута свойства. В противном случае свойство скопирует строку документации fget (если она существует). Позволяет легко создавать свойства только для чтения, используя
property()
как декоратор:class Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Получить текущее напряжение.""" return self._voltage
Декоратор
@property
превращает методvoltage()
в «геттер» для атрибута с тем же именем, доступного только для чтения, и устанавливает для строки документации voltage значение «Получить текущее напряжение.»У объекта property есть методы
getter
,setter
иdeleter
, которые можно использовать в качестве декораторов, которые создают копию свойства с соответствующей функцией доступа, установленной для декорированной функции. Лучше всего это пояснить на примере:class C: def __init__(self): self._x = None @property def x(self): """Я 'х' свойство.""" return self._x @x.setter def x(self, value): self._x = value @x.deleter def x(self): del self._x
Код в точности эквивалентен первому примеру. Не забудьте присвоить дополнительным функциям то же имя, что и исходное свойство (в данном случае
x
)У возвращённого объекта свойства также есть атрибуты
fget
,fset
иfdel
, соответствующие аргументам конструктора.Изменено в версии 3.5: Строки документации объектов свойств теперь доступны для записи.
-
class
range
(stop) -
class
range
(start, stop[, step]) range
— не функция, а неизменяемый тип последовательности, как описано в Диапазоны и Типы последовательностей — list, tuple, range.
-
repr
(object)¶ Возвращает строку, содержащую печатное представление объекта. Для многих типов функция пытается вернуть строку, которая отдает объект с тем же значением при передаче в
eval()
, в противном случае представление представляет собой строку, заключенную в угловые скобки, которая содержит имя типа объекта вместе с дополнительными информация, часто включающая название и адрес объекта. Класс может управлять тем, что функция возвращает для своих экземпляров, определяя метод__repr__()
.
-
reversed
(seq)¶ Возвращает реверсивный итератор. seq должен быть объектом, у которого есть метод
__reversed__()
или поддерживает протокол последовательности (метод__len__()
и метод__getitem__()
с целочисленными аргументами, начинающимися с0
).
-
round
(number[, ndigits])¶ Возвращает 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()
для float может быть неожиданным: например,round(2.675, 2)
дает2.67
вместо ожидаемого2.68
. Это не ошибка: это результат того факта, что большинство десятичных дробей не могут быть представлены точно в виде чисел с плавающей запятой. См. Арифметика с плавающей запятой: проблемы и ограничения для получения дополнительной информации.
-
class
set
([iterable]) Возвращает новый объект
set
, необязательно с элементами, полученными из iterable.set
— встроенный класс. См. документацию по этому классу вset
и Типы множества — set, frozenset.Для других контейнеров см. встроенные классы
frozenset
,list
,tuple
иdict
, а также модульcollections
.
-
setattr
(object, name, value)¶ Аналог
getattr()
. Аргументы — объект, строка и произвольное значение. Строка может называть существующий атрибут или новый атрибут. Функция присваивает значение атрибуту, если это позволяет объект. Например,setattr(x, 'foobar', 123)
эквивалентенx.foobar = 123
.
-
class
slice
(stop)¶ -
class
slice
(start, stop[, step]) Возвращает объект нарезку, представляющий множество индексов, указанных в
range(start, stop, step)
. Аргументы start и step по умолчанию равныNone
. У объектов нарезки есть атрибуты только для чтенияstart
,stop
иstep
, которые просто возвращают значения аргументов (или их значения по умолчанию). У них нет других явных функций; однако они используются Numerical Python и другими сторонними расширениями. Объекты нарезки также создаются при использовании расширенного синтаксиса индексации. Например:a[start:stop:step]
илиa[start:stop, i]
. См.itertools.islice()
для альтернативной версии, возвращающей итератор.
-
sorted
(iterable, *, key=None, reverse=False)¶ Возвращает новый отсортированный список из элементов в iterable.
У неё есть два необязательных аргумента, которые должны указываться как ключевые аргументы.
key определяет функцию одного аргумента, которая используется для извлечения ключа сравнения из каждого элемента в iterable (например,
key=str.lower
). Значение по умолчанию —None
(сравнивает элементы напрямую).reverse — логическое значение. Если установлено значение
True
, то элементы списка сортируются, как если бы каждое сравнение было обратным.Используйте
functools.cmp_to_key()
, чтобы преобразовать функцию cmp старого стиля в функцию key.Гарантируется стабильная работа встроенной функции
sorted()
. Сортировка является стабильной, если она гарантирует не изменять относительный порядок элементов, которые сравниваются равными. Это полезно для сортировки за несколько проходов (например, сортировка по отделам, а затем по размеру зарплаты).Примеры сортировки и краткое руководство по сортировке см. в HOWTO по сортировке.
-
@
staticmethod
¶ Преобразовать метод в статический метод.
Статический метод не получает неявный первый аргумент. Чтобы объявить статический метод, используйте эту идиому:
class C: @staticmethod def f(arg1, arg2, ...): ...
Форма
@staticmethod
— функция декоратор — подробности см. в Определения функции.Статический метод может быть вызван либо для класса (например,
C.f()
), либо для экземпляра (например,C().f()
).Статические методы в Python аналогичны методам Java или C++. Также см.
classmethod()
для варианта, который полезен для создания альтернативных конструкторов классов.Как и все декораторы, также можно вызвать
staticmethod
как обычную функцию и что-то сделать с её результатом. Это необходимо в некоторых случаях, когда вам нужна ссылка на функцию из тела класса и вы хотите избежать автоматического преобразования в метод экземпляра. В этих случаях использовать эту идиому:class C: builtin_open = staticmethod(open)
Для получения дополнительной информации о статических методах см. Стандартная иерархия типов.
-
class
str
(object='') -
class
str
(object=b'', encoding='utf-8', errors='strict') Возвращает
str
версию object. Подробности см. вstr()
.str
— встроенная строка класса. Для получения общей информации о строках см. Тип текстовой последовательности str.
-
sum
(iterable, /, start=0)¶ Суммирует start и элементы iterable слева направо и возвращает итог. Элементы iterable обычно представляют собой числа, и start значение не может быть строкой.
Для некоторых случаев использования есть хорошие альтернативы
sum()
. Предпочтительный и быстрый способ объединения последовательности строк — вызов''.join(sequence)
. Чтобы добавить значения с плавающей запятой с повышенной точностью, см.math.fsum()
. Чтобы объединить серию итераций, рассмотрите возможность использованияitertools.chain()
.Изменено в версии 3.8: Параметр start можно указать как ключевой аргумент.
-
super
([type[, object-or-type]])¶ Возвращает прокси-объект, который делегирует вызовы методов родительскому или одноуровневому классу 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()
. Атрибут является динамическим и может изменяться при обновлении иерархии наследования.Если второй аргумент пропущен, возвращаемый суперобъект несвязан. Если второй аргумент — объект,
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
([iterable]) tuple
— не функция, а неизменный тип последовательности, как описано в Кортежи и Типы последовательностей — list, tuple, range.
-
class
type
(object)¶ -
class
type
(name, bases, dict) С одним аргументом возвращает тип object. Возвращаемое значение — это объект типа и, как правило, тот же объект, что и
object.__class__
.Встроенная функция
isinstance()
рекомендуется для проверки типа объекта, поскольку она учитывает подклассы.С тремя аргументами возвращает объект нового типа. По сути, это динамическая форма оператора
class
. Строка name является именем класса и становится атрибутом__name__
. Кортеж bases содержит базовые классы и становится атрибутом__bases__
; если пусто, добавляетсяobject
, конечная база всех классов. Словарь dict содержит определения атрибутов и методов для тела класса; он может быть скопирован или обёрнут до того, как станет атрибутом__dict__
. Следующие два оператора создают идентичные объектыtype
:>>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1))
См. также Объекты типа.
Изменено в версии 3.6: Подклассы
type
, которые не заменяютtype.__new__
, больше не могут использовать форму с одним аргументом для получения типа объекта.
-
vars
([object])¶ Возвращает атрибут
__dict__
для модуля, класса, экземпляра или любого другого объекта с атрибутом__dict__
.У таких объектов, как модули и экземпляры, есть обновляемый атрибут
__dict__
; однако другие объекты могут содержать ограничения на запись для своих атрибутов__dict__
(например, классы используютtypes.MappingProxyType
для предотвращения прямого обновления словаря).Без аргумента
vars()
действует какlocals()
. Обратите внимание, что locals словарь полезен только для чтения, поскольку обновления locals словаря игнорируются.Возникает исключение
TypeError
, если объект указан, но у него нет атрибута__dict__
(например, если его класс определяет атрибут__slots__
).
-
zip
(*iterables)¶ Создать итератор, который объединяет элементы из каждой итерации.
Возвращает итератор кортежей, где i-й кортеж содержит i-й элемент из каждой из последовательностей аргументов или итераций. Итератор останавливается, когда исчерпывается самая короткая итерация ввода. С одним итеративным аргументом возвращает итератор 1-кортежей. Без аргументов возвращает пустой итератор. Эквивалентно:
def zip(*iterables): # zip('ABCD', 'xy') --> Ax By sentinel = object() iterators = [iter(it) for it in iterables] while iterators: result = [] for it in iterators: elem = next(it, sentinel) if elem is sentinel: return result.append(elem) yield tuple(result)
Порядок вычисления итераций слева направо гарантируется. Это делает возможной идиому для кластеризации ряда данных в группы длины n с использованием
zip(*[iter(s)]*n)
. Это повторяет итератор samen
раз, так что у каждого выходного кортежа есть результат вызововn
к итератору. Это приводит к разделению входных данных на блоки длиной n.zip()
следует использовать только с входами неравной длины, если вам не нужны завершающие несопоставленные значения из более длинных итераций. Если эти значения важны, использовать вместо нихitertools.zip_longest()
.zip()
вместе с оператором*
можно использовать для распаковки списка:>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> zipped = zip(x, y) >>> list(zipped) [(1, 4), (2, 5), (3, 6)] >>> x2, y2 = zip(*zip(x, y)) >>> x == list(x2) and y == list(y2) True
-
__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).
Сноски
[1] | Обратите внимание, что синтаксический анализатор принимает только соглашение о конце строки в стиле Unix. Если вы читаете код из файла, обязательно используйте режим преобразования новой строки для преобразования новых строк в стиле Windows или Mac. |