Встроенные функции
Интерпретатор Python имеет ряд встроенных функций и типов, которые всегда доступны. Они перечислены здесь в алфавитном порядке.
Встроенные функции | |||
|---|---|---|---|
-
abs(x) -
Возвращает абсолютное значение числа. Аргумент может быть целым числом, числом с плавающей точкой или объектом, реализующим
__abs__(). Если аргумент является комплексным числом, возвращается его модуль.
-
aiter(async_iterable) -
Возвращает асинхронный итератор для асинхронной итерируемой последовательности. Эквивалентно вызову
x.__aiter__().Примечание: В отличие от
iter(), уaiter()нет варианта с двумя аргументами.Новое в версии 3.10.
-
all(iterable) -
Возвращает
Trueесли все элементы итерируемой последовательности истинны (или если итерируемая последовательность пустая). Эквивалентно:def all(iterable): for element in iterable: if not element: return False return True
-
awaitable anext(async_iterator) - awaitable anext(async_iterator, default)
-
При ожидании возвращает следующий элемент из заданного асинхронного итератора, или default, если задано и итератор исчерпан.
Это асинхронный аналог встроенной функции
next()и ведет себя аналогично.Вызывает метод
__anext__()объекта async_iterator, возвращая awaitable. Ожидание этого возвращает следующее значение итератора. Если задан default, он возвращается, если итератор исчерпан, в противном случае возникаетStopAsyncIteration.Новое в версии 3.10.
-
any(iterable) -
Возвращает
Trueесли какой-либо элемент из итерируемой последовательности истинен. Если итерируемая последовательность пуста, возвращает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 преобразуется с помощью стандартной проверки истинности. Если 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()автоматически вызовет её, позволяя вам войти в отладчик по вашему выбору. Еслиsys.breakpointhook()недоступна, эта функция вызоветRuntimeError.По умолчанию поведение
breakpoint()может быть изменено с помощью переменной окруженияPYTHONBREAKPOINT. См.sys.breakpointhook()для получения подробных сведений об использовании.Обратите внимание, что это не гарантируется, если
sys.breakpointhook()была заменена.Вызывает событие аудита
builtins.breakpointс аргументомbreakpointhook.Новое в версии 3.7.
- класс bytearray(source=b'')
- класс bytearray(source, encoding)
- класс bytearray(source, encoding, errors)
-
Возвращает новый массив байтов. Класс
bytearrayпредставляет собой изменяемую последовательность целых чисел в диапазоне 0 <= x < 256. Он обладает большинством обычных методов изменяемых последовательностей, описанных в Типы изменяемых последовательностей, а также большинство методов типаbytes, см. Операции с байтами и массивами байтов.Необязательный параметр source может использоваться для инициализации массива несколькими способами:
- Если это строка, вы также должны указать параметры encoding (и необязательно errors);
bytearray()затем преобразует строку в байты с использованиемstr.encode(). - Если это целое число, массив будет иметь такой размер и будет инициализирован нулевыми байтами.
- Если это объект, соответствующий интерфейсу буфера, для инициализации массива байтов будет использоваться только для чтения буфер объекта.
- Если это итерируемый объект, он должен быть итерируемым объектом целых чисел в диапазоне
0 <= x < 256, которые используются в качестве начального содержимого массива.
Без аргумента создаётся массив размером 0.
См. также Бинарные типы последовательностей — bytes, bytearray, memoryview и Объекты bytearray.
- Если это строка, вы также должны указать параметры encoding (и необязательно errors);
- класс bytes(source=b'')
- класс bytes(source, encoding)
- класс bytes(source, encoding, errors)
-
Возвращает новый объект «bytes», представляющий собой неизменяемую последовательность целых чисел в диапазоне
0 <= x < 256.bytes— это неизменяемая версияbytearray— у него те же методы, не изменяющие объект, и то же поведение индексации и срезов.Соответственно, аргументы конструктора интерпретируются так же, как для
bytearray().Объекты bytes также можно создавать с помощью литералов, см. Литералы строк и байтов.
См. также Бинарные типы последовательностей — bytes, bytearray, memoryview, Объекты Bytes и Операции с байтами и массивами байтов.
-
callable(object) -
Возвращает
True, если аргумент object является вызываемым, иFalse— если нет. Если это возвращаетTrue, всё ещё возможно, что вызов завершится ошибкой, но если этоFalse, вызов object никогда не выполнится. Обратите внимание, что классы являются вызываемыми (вызов класса возвращает новый экземпляр); экземпляры являются вызываемыми, если у их класса есть метод__call__().Добавлено в версии 3.2: Эта функция была сначала удалена в Python 3.0, а затем возвращена в Python 3.2.
-
chr(i) -
Возвращает строку, представляющую символ, код Unicode которого — целое число i. Например,
chr(97)возвращает строку'a', аchr(8364)возвращает строку'€'. Это обратное преобразование дляord().Допустимый диапазон для аргумента — от 0 до 1 114 111 (0x10FFFF в шестнадцатеричной системе).
ValueErrorбудет поднята, если i выходит за этот предел.
-
@classmethod -
Преобразует метод в метод класса.
Метод класса получает класс как неявный первый аргумент, так же как метод экземпляра получает экземпляр. Чтобы объявить метод класса, используйте эту конструкцию:
class C: @classmethod def f(cls, arg1, arg2): ...Форма
@classmethod— это функция декоратор — см. Определения функций для получения подробностей.Метод класса можно вызвать как на классе (например,
C.f()), так и на экземпляре (например,C().f()). Экземпляр игнорируется, кроме его класса. Если метод класса вызывается для производного класса, производный объект класса передаётся как неявный первый аргумент.Методы класса отличаются от статических методов C++ или Java. Если вам нужны именно они, см.
staticmethod()в этом разделе. Для получения дополнительной информации о методах класса см. Стандартная иерархия типов.Изменено в версии 3.9: Методы класса теперь могут оборачивать другие дескрипторы, такие как
property().Изменено в версии 3.10: Методы класса теперь наследуют атрибуты метода (
__module__,__name__,__qualname__,__doc__и__annotations__), а также новый атрибут__wrapped__.Изменено в версии 3.11: Методы класса больше не могут оборачивать другие дескрипторы, такие как
property().
-
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=- 1) -
Компилирует источник в объект кода или AST. Объекты кода могут быть выполнены с помощью
exec()илиeval(). Источник может быть обычной строкой, байтовой строкой или объектом AST. Обратитесь к документации модуляastдля получения информации о работе с объектами AST.Аргумент filename должен указывать файл, из которого был прочитан код; передайте какое-либо распознаваемое значение, если он не был прочитан из файла (часто используется
'<string>').Аргумент mode указывает, какой тип кода должен быть скомпилирован; он может быть
'exec'если источник состоит из последовательности операторов,'eval'если он состоит из одного выражения или'single'если он состоит из одного интерактивного оператора (в последнем случае операторы выражения, которые приводят к чему-то другому, чемNone, будут напечатаны).Необязательные аргументы flags и dont_inherit управляют тем, какие опции компилятора должны быть активированы и какие новые возможности должны быть разрешены. Если ни один из них не присутствует (или оба равны нулю), код компилируется с теми же флагами, которые влияют на код, вызывающий
compile(). Если аргумент flags указан, а dont_inherit нет (или равен нулю), то опции компилятора и новые возможности, указанные в аргументе flags, используются дополнительно к тем, которые использовались бы в любом случае. Если dont_inherit является целочисленным ненулевым значением, то аргумент flags — это оно; флаги (новые возможности и опции компилятора) в окружающем коде игнорируются.Опции компилятора и новые возможности задаются битами, которые можно побитово объединять OR, чтобы указать несколько опций. Битовое поле, необходимое для задания определённой новой возможности, можно найти как атрибут
compiler_flagна экземпляре_Featureв модуле__future__. Флаги компилятора можно найти в модулеast, с префиксомPyCF_.Аргумент optimize задаёт уровень оптимизации компилятора; значение по умолчанию
-1выбирает уровень оптимизации интерпретатора, заданный параметрами-O. Явные уровни —0(без оптимизации;__debug__равно true),1(удаляются утверждения,__debug__равно false) или2(также удаляются строковые документации).Эта функция вызывает
SyntaxError, если скомпилированный исходный код некорректен, иValueError, если исходный код содержит нулевые байты.Если вы хотите разобрать Python-код в его представление AST, см.
ast.parse().Вызывает событие аудита аудита
compileс аргументамиsourceиfilename. Это событие также может быть вызвано неявной компиляцией.Примечание
При компиляции строки с многострочным кодом в режиме
'single'или'eval'входные данные должны завершаться по крайней мере одной новой строкой. Это для облегчения обнаружения незавершенных и завершенных операторов в модулеcode.Предупреждение
Возможно аварийное завершение интерпретатора Python с достаточно большой/сложной строкой при компиляции в объект AST из-за ограничений глубины стека в компиляторе AST Python.
Изменено в версии 3.2: Разрешено использование новых строк Windows и Mac. Также вход в режиме
'exec'больше не должен заканчиваться новой строкой. Добавлено параметр optimize.Изменено в версии 3.5: Ранее при обнаружении нулевых байтов в источнике поднималась
TypeError.Добавлена в версии 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. name не обязательно должен быть идентификатором Python (см.setattr()).
- class dict(**kwarg)
- class dict(mapping, **kwarg)
- class dict(iterable, **kwarg)
-
Создаёт новый словарь. Объект
dict— это класс словаря. См.dictи Типы словарей — dict для получения документации по этому классу.Для других контейнеров см. встроенные классы
list,setиtuple, а также модульcollections.
-
dir() - dir(object)
-
Без аргументов возвращает список имён в текущей локальной области видимости. С аргументом пытается вернуть список допустимых атрибутов для данного объекта.
Если у объекта есть метод с именем
__dir__(), этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, реализующим пользовательскую функцию__getattr__()или__getattribute__(), настраивать способ, которым функцияdir()сообщает об их атрибутах.Если у объекта отсутствует метод
__dir__(), функция пытается собрать информацию из атрибута__dict__объекта, если он определён, и из его типа объекта. Полученный список необязательно является полным и может быть неточным, когда объект имеет пользовательскую функцию__getattr__().Встроенная механика
dir()ведёт себя по-разному с различными типами объектов, так как она стремится произвести наиболее релевантную, а не полную информацию:- Если объект является объектом модуля, список содержит имена атрибутов модуля.
- Если объект является объектом типа или класса, список содержит имена его атрибутов и рекурсивно атрибуты его базовых классов.
- В противном случае список содержит имена атрибутов объекта, имена атрибутов его класса и рекурсивно атрибуты базовых классов его класса.
Полученный список отсортирован по алфавиту. Например:
>>> import struct >>> dir() # 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), но может быть на единицу меньше. В любом случаеq * b + a % bочень близок к a, еслиa % bотлично от нуля, он имеет тот же знак, что и b, и0 <= abs(a % b) < abs(b).
-
enumerate(iterable, start=0) -
Возвращает объект enumerate. iterable должен быть последовательностью, итератором или другим объектом, поддерживающим итерацию. Метод
__next__()итератора, возвращённого функциейenumerate(), возвращает кортеж, содержащий счётчик (начиная с start, по умолчанию 0) и значения, полученные при итерации по iterable.>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
Эквивалентно:
def enumerate(iterable, start=0): n = start for elem in iterable: yield n, elem n += 1
-
eval(expression, globals=None, locals=None) -
Аргументами являются строка и необязательные словари globals и locals. Если задан, globals должен быть словарем. Если задан, locals может быть любым объектом-отображением.
Аргумент expression анализируется и вычисляется как выражение Python (технически говоря, список условий) с использованием словарей globals и locals в качестве глобального и локального пространства имён. Если словарь globals задан и не содержит значение для ключа
__builtins__, ссылка на словарь встроенного модуляbuiltinsвставляется под этим ключом перед анализом expression. Таким образом, вы можете управлять доступными встроенными функциями исполняемого кода, вставив свой собственный словарь__builtins__в globals перед передачей его функцииeval(). Если словарь locals опущен, он по умолчанию равен globals. Если оба словаря опущены, выражение выполняется с globals и locals в среде, где вызвана функцияeval(). Обратите внимание, что функция eval() не имеет доступа к вложенным областям видимости (non-locals) в окружающей среде.Возвращаемое значение — результат вычисленного выражения. Синтаксические ошибки сообщаются как исключения. Пример:
>>> x = 1 >>> eval('x+1') 2Эта функция также может использоваться для выполнения произвольных кодовых объектов (таких, которые созданы функцией
compile()). В этом случае передайте кодовый объект вместо строки. Если кодовый объект был скомпилирован с'exec'в качестве аргумента mode, возвращаемое значениеeval()будетNone.Подсказки: динамическое выполнение операторов поддерживается функцией
exec(). Функцииglobals()иlocals()возвращают текущий глобальный и локальный словари соответственно, что может быть полезно для передачи их функцииeval()илиexec().Если заданный исходный код является строкой, тогда ведущие и хвостовые пробелы и табуляции удаляются.
См.
ast.literal_eval()для функции, которая может безопасно вычислить строки с выражениями, содержащими только литералы.Вызывает событие аудита аудита
execс кодовым объектом в качестве аргумента. Могут быть вызваны также события компиляции кода.
-
exec(object, globals=None, locals=None, /, *, closure=None) -
Эта функция поддерживает динамическое выполнение кода Python. object должен быть либо строкой, либо объектом кода. Если это строка, строка интерпретируется как набор инструкций Python, которые затем выполняются (если не возникает синтаксическая ошибка). 1 Если это объект кода, он просто выполняется. В любом случае ожидается, что выполняемый код является допустимым вводом для файла (см. раздел Ввод из файла в Справочном руководстве). Имейте в виду, что инструкции
nonlocal,yieldиreturnне могут использоваться вне определений функций, даже в контексте кода, переданного функцииexec(). Значение возврата —None.В любом случае, если необязательные части опущены, код выполняется в текущем объёме. Если предоставлен только globals, он должен быть словарем (и не подклассом словаря), который будет использоваться как для глобальных, так и для локальных переменных. Если заданы globals и locals, они используются для глобальных и локальных переменных соответственно. Если предоставлен locals, он может быть любым объектом сопоставления. Помните, что на уровне модуля глобальные и локальные переменные — один и тот же словарь. Если exec получает два отдельных объекта как globals и locals, код будет выполнен так, как будто он был вложен в определение класса.
Если словарь globals не содержит значения для ключа
__builtins__, в нём вставляется ссылка на словарь встроенного модуляbuiltins. Таким образом, вы можете контролировать доступные встроенные функции для выполняемого кода, вставив свой собственный__builtins__словарь в globals перед передачей его функцииexec().Аргумент closure задаёт замыкание — кортеж cellvars. Он допустим только тогда, когда object — это объект кода, содержащий свободные переменные. Длина кортежа должна точно соответствовать количеству свободных переменных, на которые ссылается объект кода.
Вызывает событие аудита аудита
execс объектом кода в качестве аргумента. Также могут быть вызваны события компиляции кода.Примечание
Встроенные функции
globals()иlocals()возвращают текущий глобальный и локальный словари соответственно, что может быть полезно для передачи их как второго и третьего аргументов функцииexec().Примечание
По умолчанию locals ведут себя так же, как описано для функции
locals()ниже: не следует пытаться изменять словарь locals по умолчанию. Передайте явный словарь locals, если нужно увидеть влияние кода на locals после возврата функцииexec().Изменено в версии 3.11: Добавлен параметр closure.
-
filter(function, iterable) -
Создаёт итератор из тех элементов iterable, для которых функция function возвращает истину. iterable может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если function равна
None, предполагается функция тождества, то есть все элементы iterable, которые ложны, удаляются.Обратите внимание, что
filter(function, iterable)эквивалентно выражению-генератору(item for item in iterable if function(item))если function неNone, и(item for item in iterable if item)если function равнаNone.См.
itertools.filterfalse()для дополнительной функции, возвращающей элементы iterable, для которых function ложна.
-
class float(x=0.0) -
Возвращает число с плавающей точкой, созданное из числа или строки x.
Если аргумент — строка, она должна содержать десятичное число, необязательно с знаком, и необязательно вставленное в пробелы. Необязательный знак может быть
'+'или'-'; знак'+'не влияет на возвращаемое значение. Аргумент также может быть строкой, представляющей NaN (не число), или положительную или отрицательную бесконечность. Более точно, вход должен соответствовать правилуfloatvalueв следующей грамматике, после удаления ведущих и последующих пробелов:sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" digitpart ::= `!digit` (["_"] `!digit`)* number ::= [digitpart] "." digitpart | digitpart ["."] exponent ::= ("e" | "E") ["+" | "-"] digitpart floatnumber ::= number [exponent] floatvalue ::= [sign] (floatnumber | infinity | nan)Здесь
digit— это десятичная цифра Юникода (символ в категории ЮникодаNd). Регистр не важен, поэтому, например, «inf», «Inf», «INFINITY» и «iNfINity» — это допустимые способы записи положительной бесконечности.В противном случае, если аргумент — целое или число с плавающей точкой, возвращается число с плавающей точкой с тем же значением (в пределах точности чисел с плавающей точкой Python). Если аргумент выходит за пределы диапазона Python float, будет поднята ошибка
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=set())
-
Возвращает новый объект
frozenset, необязательно с элементами, взятыми из iterable.frozenset— это встроенный класс. См.frozensetи Типы множеств — set, frozenset для документации по этому классу.Для других контейнеров обратитесь к встроенным классам
set,list,tupleиdict, а также к модулюcollections.
-
getattr(object, name) - getattr(object, name, default)
-
Возвращает значение атрибута с заданным именем объекта. name должно быть строкой. Если строка является именем одного из атрибутов объекта, результат — значение этого атрибута. Например,
getattr(x, 'foobar')эквивалентноx.foobar. Если атрибут с заданным именем не существует, возвращается значение default, если оно задано, в противном случае генерируется исключениеAttributeError. name необязательно должно быть идентификатором Python (см.setattr()).Примечание
Так как искажение имен приватных атрибутов происходит на этапе компиляции, для получения значения приватного атрибута (атрибуты с двумя ведущими подчеркиваниями) необходимо вручную исказить его имя, чтобы получить его с помощью
getattr().
-
globals() -
Возвращает словарь, реализующий текущее пространство имен модуля. Для кода внутри функций, он устанавливается при определении функции и остается неизменным независимо от того, где вызывается функция.
-
hasattr(object, name) -
Аргументы — объект и строка. Результат —
Trueесли строка является именем одного из атрибутов объекта,Falseесли нет. (Это реализуется путем вызоваgetattr(object, name)и проверки, вызывает ли этоAttributeErrorили нет.)
-
hash(object) -
Возвращает значение хэша объекта (если оно есть). Значения хэша — целые числа. Они используются для быстрого сравнения ключей словаря во время поиска в словаре. Числовые значения, сравниваемые как равные, имеют одинаковое значение хэша (даже если они имеют разные типы, как в случае с 1 и 1.0).
Примечание
Для объектов с настраиваемыми методами
__hash__()обратите внимание, чтоhash()усекает возвращаемое значение в соответствии с шириной бита машины-хоста.
-
help() - help(request)
-
Вызывает встроенную систему справки. (Эта функция предназначена для интерактивного использования.) Если аргумент не задан, интерактивная система справки запускается в консоли интерпретатора. Если аргумент — строка, то строка рассматривается как имя модуля, функции, класса, метода, ключевого слова или темы документации, и страница справки выводится в консоль. Если аргумент — любой другой объект, генерируется страница справки об объекте.
Обратите внимание, что если в списке параметров функции появляется символ слеша (/), при вызове
help(), это означает, что параметры до слеша являются только позиционными. Дополнительную информацию см. в разделе FAQ о только позиционных параметрах.Эта функция добавлена в встроенное пространство имен модулем
site.
-
hex(x) -
Преобразует целое число в строку в шестнадцатеричном формате (нижнего регистра) с префиксом «0x». Если x не является объектом Python
int, он должен определить метод__index__(), возвращающий целое число. Некоторые примеры:>>> hex(255) '0xff' >>> hex(-42) '-0x2a'
Если вы хотите преобразовать целое число в строку шестнадцатеричного формата (верхнего или нижнего регистра) с префиксом или без него, вы можете использовать любой из следующих способов:
>>> '%#x' % 255, '%x' % 255, '%X' % 255 ('0xff', 'ff', 'FF') >>> format(255, '#x'), format(255, 'x'), format(255, 'X') ('0xff', 'ff', 'FF') >>> f'{255:#x}', f'{255:x}', f'{255:X}' ('0xff', 'ff', 'FF')См. также
format()для получения дополнительной информации.См. также
int()для преобразования шестнадцатеричной строки в целое число с основанием 16.Примечание
Для получения шестнадцатеричной строковой записи числа с плавающей запятой используйте метод
float.hex().
-
id(object) -
Возвращает «тождество» объекта. Это целое число, гарантированно уникальное и постоянное для этого объекта в течение всего его жизненного цикла. Два объекта с неперекрывающимися жизненными циклами могут иметь одинаковое значение
id().Детали реализации CPython: Это адрес объекта в памяти.
Вызывает событие аудита
builtins.idс аргументомid.
-
input() - input(prompt)
-
Если аргумент prompt присутствует, он выводится в стандартный вывод без заключительного символа новой строки. Затем функция считывает строку из входного потока, преобразует её в строку (удаляя заключительную новую строку) и возвращает её. При чтении 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=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. Строка может быть необязательно префиксной+или-(без пробела), содержать ведущие нули, быть окружённой пробелами и иметь одиночные нижние подчеркивания между цифрами.Целочисленная строка в системе счисления base-n содержит цифры, каждая из которых представляет значение от 0 до n-1. Значения 0–9 могут быть представлены любыми десятичными цифрами Unicode. Значения 10–35 могут быть представлены
aдоz(илиAдоZ). По умолчанию base равен 10. Разрешённые системы счисления — 0 и от 2 до 36. Строки в системах счисления 2, 8 и 16 могут быть необязательно префиксными0b/0B,0o/0O, или0x/0X, как и целочисленные литералы в коде. Для base 0 строка интерпретируется аналогично целочисленному литералу в коде, где фактическая система счисления определяется префиксом (2, 8, 10 или 16). Для base 0 также запрещены ведущие нули:int('010', 0)не является допустимым, в то время какint('010')иint('010', 8)— да.Тип целых чисел описан в Числовые типы — 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строковые входные данные и строковые представления могут быть ограничены для предотвращения атак типа "отказ в обслуживании". При превышении лимита при преобразовании строки x в целое числоintили при преобразовании целого числаintв строку будет поднято исключениеValueError. См. документацию по ограничению длины преобразования целого числа в строку.
-
isinstance(object, classinfo) -
Возвращает
Trueесли аргумент object является экземпляром аргумента classinfo или его (прямого, косвенного или виртуального) подкласса. Если object не является объектом данного типа, функция всегда возвращаетFalse. Если classinfo является кортежем объектов типов (или рекурсивно, другими такими кортежами) или типом-объединением нескольких типов, возвращаетTrueесли object является экземпляром любого из этих типов. Если classinfo не является типом или кортежем типов и таких кортежей, генерируется исключениеTypeError.TypeErrorможет не быть поднято для неверного типа, если ранее проверка прошла успешно.Изменено в версии 3.10: classinfo может быть типом-объединением.
-
issubclass(class, classinfo) -
Возвращает
Trueесли class является подклассом (прямым, косвенным или виртуальным) classinfo. Класс считается подклассом самого себя. classinfo может быть кортежем объектов классов (или рекурсивно, другими такими кортежами) или типом-объединением, в этом случае возвращаетTrueесли class является подклассом любого элемента в classinfo. В любом другом случае генерируется исключениеTypeError.Изменено в версии 3.10: classinfo может быть типом-объединением.
-
iter(object) - iter(object, sentinel)
-
Возвращает объект итератора. Первый аргумент интерпретируется очень по-разному в зависимости от наличия второго аргумента. Без второго аргумента, object должен быть коллекцией, поддерживающей протокол итерируемости (метод
__iter__()) или протокол последовательности (метод__getitem__()с целочисленными аргументами, начиная с0). Если объект не поддерживает ни один из этих протоколов, генерируется исключениеTypeError. Если второй аргумент, sentinel, задан, то object должен быть вызываемым объектом. Итератор в этом случае будет вызывать object без аргументов для каждого вызова метода__next__(); если возвращённое значение равно sentinel, то генерируется исключениеStopIteration, в противном случае возвращается значение.См. также Типы итераторов.
Полезное применение второй формы
iter()— чтение блоков данных. Например, чтение блоков фиксированной ширины из двоичного файла базы данных до конца файла:from functools import partial with open('mydata.db', 'rb') as f: for block in iter(partial(f.read, 64), b''): process_block(block)
-
len(s) -
Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (например, строка, байты, кортеж, список или диапазон) или коллекция (например, словарь, множество или множество-множество).
Деталь реализации CPython:
lenгенерирует исключениеOverflowErrorдля длин, превышающихsys.maxsize, например,range(2 ** 100).
- класс list
- класс list(iterable)
-
Вместо того, чтобы быть функцией,
listфактически является изменяемым типом последовательности, как документировано в Списки и Типы последовательностей — list, tuple, range.
-
locals() -
Обновляет и возвращает словарь, представляющий текущую локальную таблицу символов. Свободные переменные возвращаются функцией
locals()при вызове в блоках функций, но не в блоках классов. Обратите внимание, что на уровне модуляlocals()иglobals()являются одним и тем же словарем.Примечание
Содержимое этого словаря не следует изменять; изменения могут не повлиять на значения локальных и свободных переменных, используемых интерпретатором.
-
map(function, iterable, *iterables) -
Возвращает итератор, который применяет функцию к каждому элементу iterable, возвращая результаты. Если передаются дополнительные аргументы iterable, функция должна принимать столько аргументов и применяется к элементам из всех итераторов параллельно. При нескольких итераторах итератор останавливается, когда самый короткий итератор исчерпан. Для случаев, когда входные данные функции уже организованы в кортежи аргументов, см.
itertools.starmap().
-
max(iterable, *, key=None) - max(iterable, *, default, key=None)
- max(arg1, arg2, *args, key=None)
-
Возвращает наибольший элемент в итерируемом объекте или наибольший из двух и более аргументов.
Если предоставлен один позиционный аргумент, он должен быть итерируемым объектом. Возвращается наибольший элемент в итерируемом объекте. Если предоставлено два или более позиционных аргументов, возвращается наибольший из позиционных аргументов.
Есть два необязательных ключевых аргумента. Аргумент key определяет функцию упорядочения с одним аргументом, подобную используемой в
list.sort(). Аргумент default задаёт объект, который будет возвращён, если предоставленный итерируемый объект пустой. Если итерируемый объект пустой, а default не указан, возбуждается исключениеValueError.Если несколько элементов максимальны, функция возвращает первый из встреченных. Это согласуется с другими инструментами, сохраняющими устойчивость сортировки, такими как
sorted(iterable, key=keyfunc, reverse=True)[0]иheapq.nlargest(1, iterable, key=keyfunc).Добавлена в версии 3.4: Ключевой необязательный аргумент default.
Изменено в версии 3.8: Аргумент key может быть
None.
- класс memoryview(object)
-
Возвращает объект «представление памяти», созданный из данного аргумента. Подробнее см. Представления памяти.
-
min(iterable, *, key=None) - min(iterable, *, default, key=None)
- min(arg1, arg2, *args, key=None)
-
Возвращает наименьший элемент в итерируемом объекте или наименьший из двух и более аргументов.
Если предоставлен один позиционный аргумент, он должен быть итерируемым объектом. Возвращается наименьший элемент в итерируемом объекте. Если предоставлено два или более позиционных аргументов, возвращается наименьший из позиционных аргументов.
Есть два необязательных ключевых аргумента. Аргумент key определяет функцию упорядочения с одним аргументом, подобную используемой в
list.sort(). Аргумент default задаёт объект, который будет возвращён, если предоставленный итерируемый объект пустой. Если итерируемый объект пустой, а default не указан, возбуждается исключениеValueError.Если несколько элементов минимальны, функция возвращает первый из встреченных. Это согласуется с другими инструментами, сохраняющими устойчивость сортировки, такими как
sorted(iterable, key=keyfunc)[0]иheapq.nsmallest(1, iterable, key=keyfunc).Добавлена в версии 3.4: Ключевой необязательный аргумент default.
Изменено в версии 3.8: Аргумент key может быть
None.
-
next(iterator) - next(iterator, default)
-
Извлекает следующий элемент из итератора вызывая его метод
__next__(). Если default задан, он возвращается, если итератор исчерпан, в противном случае возбуждается исключениеStopIteration.
-
class object -
Возвращает новый бесхарактерный объект.
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) -
Открыть файл и вернуть соответствующий объект файла. Если файл не удаётся открыть, возникает исключение
OSError. См. Чтение и запись файлов для дополнительных примеров использования этой функции.файл — это объект, подобный пути, задающий имя файла (абсолютное или относительное к текущей рабочей директории) открываемого файла или целочисленный дескриптор файла, который необходимо обернуть. (Если задан дескриптор файла, он будет закрыт при закрытии возвращённого объекта ввода-вывода, если только closefd не установлено в
False.)mode — это необязательная строка, которая задаёт режим открытия файла. По умолчанию это
'r', что означает открытие для чтения в текстовом режиме. Другие распространённые значения —'w'для записи (обнуляя файл, если он уже существует),'x'для исключительного создания, и'a'для добавления (что на некоторых системах Unix означает, что все записи добавляются в конец файла независимо от текущей позиции поиска). В текстовом режиме, если encoding не указан, используется кодировка по умолчанию, зависящая от платформы: вызывается функцияlocale.getencoding()для получения текущей кодировки локали. (Для чтения и записи необработанных байтов используйте двоичный режим и не указывайте encoding.) Доступные режимы:Символ
Значение
'r'открытие для чтения (по умолчанию)
'w'открытие для записи, сначала обнуляя файл
'x'открытие для исключительного создания, завершается ошибкой, если файл уже существует
'a'открытие для записи, добавление в конец файла, если он существует
'b'двоичный режим
't'текстовый режим (по умолчанию)
'+'открытие для обновления (чтения и записи)
Режим по умолчанию —
'r'(открытие для чтения текста, синоним'rt'). Режимы'w+'и'w+b'открывают и обнуляют файл. Режимы'r+'и'r+b'открывают файл без обнуления.Как упоминалось в Обзоре, Python различает двоичный и текстовый ввод-вывод. Файлы, открытые в двоичном режиме (включая
'b'в аргументе mode), возвращают содержимое как объектыbytesбез декодирования. В текстовом режиме (по умолчанию или при включении't'в аргументе mode) содержимое файла возвращается какstr, после предварительного декодирования байтов с использованием кодировки по умолчанию, зависящей от платформы, или с указанной кодировкой encoding.Примечание
Python не зависит от понятия текстовых файлов в операционной системе; вся обработка выполняется самим Python и поэтому независима от платформы.
buffering — это необязательное целое число, используемое для установки политики буферизации. Передайте 0, чтобы отключить буферизацию (разрешено только в двоичном режиме), 1, чтобы выбрать построчную буферизацию (используется только при записи в текстовом режиме), и целое число > 1, чтобы указать размер в байтах буфера с фиксированным размером. Обратите внимание, что указание размера буфера таким образом применяется для двоичного буферизованного ввода-вывода, но
TextIOWrapper(т. е. файлы, открытые сmode='r+') будут иметь другую буферизацию. Чтобы отключить буферизацию вTextIOWrapper, рассмотрите использование флагаwrite_throughдляio.TextIOWrapper.reconfigure(). Если аргумент buffering не задан, политика буферизации по умолчанию работает следующим образом:- Двоичные файлы буферизируются кусками фиксированного размера; размер буфера выбирается с помощью эвристики, пытающейся определить «размер блока» устройства, и по умолчанию использует
io.DEFAULT_BUFFER_SIZE. На многих системах буфер обычно имеет длину 4096 или 8192 байта. - «Интерактивные» текстовые файлы (файлы, для которых
isatty()возвращаетTrue) используют построчную буферизацию. Другие текстовые файлы используют политику, описанную выше для двоичных файлов.
encoding — это имя кодировки, используемой для декодирования или кодирования файла. Это должно использоваться только в текстовом режиме. Кодировка по умолчанию зависит от платформы (что возвращает
locale.getencoding()), но может использоваться любая текстовая кодировка, поддерживаемая Python. См. модульcodecsдля списка поддерживаемых кодировок.errors — необязательная строка, которая задаёт способ обработки ошибок кодирования и декодирования — это нельзя использовать в двоичном режиме. Доступно множество стандартных обработчиков ошибок (перечислены в Обработчики ошибок), а также любое имя обработчика ошибок, зарегистрированное с помощью
codecs.register_error(). Стандартные имена включают:-
'strict'для повышения исключенияValueError, если произошла ошибка кодирования. Значение по умолчаниюNoneимеет тот же эффект. -
'ignore'игнорирует ошибки. Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных. -
'replace'вызывает вставку маркера замены (например,'?') в случае некорректных данных. -
'surrogateescape'представляет любые некорректные байты как низкие суррогатные код-единицы от U+DC80 до U+DCFF. Эти суррогатные код-единицы затем будут преобразованы обратно в те же байты, когда используется обработчик ошибокsurrogateescapeпри записи данных. Это полезно для обработки файлов с неизвестной кодировкой. -
'xmlcharrefreplace'поддерживается только при записи в файл. Символы, не поддерживаемые кодировкой, заменяются соответствующей ссылкой на символ XML&#nnn;. -
'backslashreplace'заменяет некорректные данные обратными косыми слешами 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('This will be written to somedir/spamspam.txt', file=f) ... >>> os.close(dir_fd) # don't leak a file descriptor - Двоичные файлы буферизируются кусками фиксированного размера; размер буфера выбирается с помощью эвристики, пытающейся определить «размер блока» устройства, и по умолчанию использует
Тип объекта файла, возвращаемого функцией
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.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) -
Возвращает основание в степени показателя; если mod задан, возвращает основание в степени показателя по модулю mod (вычисляется эффективнее, чем
pow(base, exp) % mod). Двухаргументная формаpow(base, exp)эквивалентна использованию оператора возведения в степень:base**exp.Аргументы должны иметь числовые типы. При смешанных типах операндов применяются правила приведения для бинарных арифметических операторов. Для операндов типа
int, результат имеет тот же тип, что и операнды (после приведения), если второй аргумент не отрицательный; в противном случае все аргументы преобразуются к типу float, и результатом будет float. Например,pow(10, 2)возвращает100, ноpow(10, -2)возвращает0.01. Для отрицательного основания типаintилиfloatи нецелочисленного показателя, результат будет комплексным. Например,pow(-9, 0.5)возвращает значение, близкое к3j.Для операндов типа
intоснования и показателя, если mod задан, mod также должен быть целого типа и mod должен быть не нулевым. Если mod задан и показатель отрицательный, основание должно быть взаимно простым с mod. В этом случае возвращаетсяpow(inv_base, -exp, mod), где inv_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— метод удаления.Если задано doc, оно будет строкой документации атрибута свойства. В противном случае, свойство скопирует строку документации fget (если она существует). Это позволяет легко создавать свойства только для чтения, используя
property()в качестве декоратора:class Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Get the current voltage.""" return self._voltageДекоратор
@propertyпреобразует методvoltage()в «получатель» для атрибута только для чтения с тем же именем, и устанавливает строку документации для voltage в «Получить текущее напряжение».-
@getter
-
@setter
-
@deleter -
Объект свойства имеет методы
getter,setter, иdeleter, которые могут использоваться в качестве декораторов, создающих копию свойства с соответствующей функцией доступа, установленной в декорированную функцию. Это лучше всего объяснить на примере: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Этот код точно эквивалентен первому примеру. Убедитесь, что дополнительные функции имеют то же имя, что и исходное свойство (
xв этом случае).Возвращаемый объект свойства также имеет атрибуты
fget,fset, иfdel, соответствующие аргументам конструктора.
Изменено в версии 3.5: Строки документации объектов свойств теперь могут быть записаны.
-
- class range(stop)
- class range(start, stop, step=1)
-
Вместо того, чтобы быть функцией,
rangeна самом деле является неизменяемым типом последовательности, как документировано в Диапазонах и Типы последовательностей — список, кортеж, диапазон.
-
repr(object) -
Возвращает строку, содержащую удобочитаемое представление объекта. Для многих типов эта функция пытается вернуть строку, которая даст тот же объект, когда будет передана в
eval(); в противном случае, представление — это строка в угловых скобках, которая содержит имя типа объекта вместе с дополнительной информацией, часто включая имя и адрес объекта. Класс может управлять тем, что возвращает эта функция для своих экземпляров, определив метод__repr__(). Еслиsys.displayhook()недоступен, эта функция вызоветRuntimeError.
-
reversed(seq) -
Возвращает обратный итератор. seq должен быть объектом, у которого есть метод
__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. В противном случае, возвращаемое значение имеет тот же тип, что и число.Для общего объекта 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,list,tupleиdict, а также модульcollections.
-
setattr(object, name, value) -
Это аналог
getattr(). Аргументы — объект, строка и произвольное значение. Строка может называть существующий атрибут или новый. Функция присваивает значение атрибуту, если объект это позволяет. Например,setattr(x, 'foobar', 123)эквивалентноx.foobar = 123.name не обязательно должен быть идентификатором Python, как определено в Идентификаторы и ключевые слова, если только объект не решит это принудительно, например, в пользовательском методе
__getattribute__()или через__slots__. Атрибут, имя которого не является идентификатором, будет недоступен с использованием точечной нотации, но доступен черезgetattr()и т. д..Примечание
Поскольку скрытие имён приватных атрибутов происходит на этапе компиляции, необходимо вручную изменить имя приватного атрибута (атрибуты с двумя ведущими подчёркиваниями), чтобы установить его с помощью
setattr().
-
class slice(stop) - class slice(start, stop, step=None)
-
Возвращает объект срезу, представляющий набор индексов, указанный
range(start, stop, step). Аргументы start и step по умолчанию равныNone.-
start
-
stop
-
step -
Объекты срезов имеют атрибуты данных только для чтения
start,stop, иstep, которые просто возвращают значения аргументов (или их значения по умолчанию). Они не имеют другой явной функциональности; однако они используются пакетами NumPy и другими сторонними пакетами.
Объекты срезов также генерируются при использовании синтаксиса расширенной индексации. Например:
a[start:stop:step]илиa[start:stop, i]. Смотритеitertools.islice()для альтернативной версии, которая возвращает итератор. -
-
sorted(iterable, /, *, key=None, reverse=False) -
Возвращает новый отсортированный список из элементов в iterable.
Имеет два необязательных аргумента, которые должны быть заданы как ключевые аргументы.
key задаёт функцию одного аргумента, которая используется для извлечения ключа сравнения из каждого элемента в iterable (например,
key=str.lower). Значение по умолчанию —None(сравнение элементов непосредственно).reverse — булево значение. Если оно установлено в
True, элементы списка сортируются так, как будто каждое сравнение было обращено.Используйте
functools.cmp_to_key()для преобразования функции старого стиля cmp в функцию key.Встроенная функция
sorted()гарантированно устойчива. Сортировка устойчива, если она гарантирует, что не будет изменён относительный порядок элементов, которые сравниваются как равные — это полезно для сортировки по нескольким проходам (например, сортировка по отделу, затем по категории должности).Алгоритм сортировки использует только
<сравнения между элементами. Хотя определение метода__lt__()будет достаточно для сортировки, PEP 8 рекомендует реализовать все шесть сравнений. Это поможет избежать ошибок при использовании одних и тех же данных с другими инструментами упорядочения, такими какmax(), которые полагаются на другой базовый метод. Реализация всех шести сравнений также помогает избежать путаницы при сравнении смешанных типов, которые могут вызывать метод__gt__().Примеры сортировки и краткий учебник по сортировке см. в Руководстве по сортировке.
-
@staticmethod -
Преобразует метод в статический метод.
Статический метод не получает неявного первого аргумента. Для объявления статического метода используйте этот шаблон:
class C: @staticmethod def f(arg1, arg2, argN): ...Форма
@staticmethod— это функция-декоратор — см. Определения функций для получения подробностей.Статический метод может вызываться как на классе (например,
C.f()), так и на экземпляре (например,C().f()). Кроме того, их можно вызывать как обычные функции (например,f()).Статические методы в Python похожи на те, что есть в Java или C++. Также см.
classmethod()для варианта, который полезен для создания альтернативных конструкторов классов.Как и все декораторы, также можно вызвать
staticmethodкак обычную функцию и сделать что-то с её результатом. Это нужно в некоторых случаях, когда вам нужна ссылка на функцию из тела класса, и вы хотите избежать автоматического преобразования в метод экземпляра. Для этих случаев используйте этот шаблон:def regular_function(): ... class C: method = staticmethod(regular_function)Дополнительную информацию о статических методах см. в Стандартной иерархии типов.
Изменено в версии 3.10: Статические методы теперь наследуют атрибуты методов (
__module__,__name__,__qualname__,__doc__и__annotations__), имеют новый атрибут__wrapped__, и теперь вызываемы как обычные функции.
- class str(object='')
- class str(object=b'', encoding='utf-8', errors='strict')
-
Возвращает строковое представление object. См.
strдля получения подробностей.str— встроенный класс строк. Для общей информации о строках см. Тип последовательности текста — str.
-
sum(iterable, /, start=0) -
Суммирует start и элементы iterable слева направо и возвращает сумму. Элементы iterable обычно являются числами, а начальное значение не должно быть строкой.
В некоторых случаях существуют хорошие альтернативы
sum(). Предпочтительный и быстрый способ конкатенации последовательности строк — вызов''.join(sequence). Для добавления чисел с плавающей точкой с расширенной точностью см.math.fsum(). Для конкатенации последовательности итерируемых объектов см.itertools.chain().Изменено в версии 3.8: Параметр start может быть указан как ключевой аргумент.
-
class super - класс super(type, object_or_type=None)
-
Возвращает прокси-объект, делегирующий вызовы методов родительскому или брату-классу type. Это полезно для доступа к унаследованным методам, переопределённым в классе.
object_or_type определяет порядок разрешения методов, который будет проверяться. Поиск начинается с класса, идущего сразу после type.
Например, если
__mro__объекта object_or_type являетсяD -> B -> C -> A -> object, а значение type равноB, тоsuper()ищетC -> A -> object.Атрибут
__mro__объекта object_or_type содержит список порядка разрешения поиска методов, используемый какgetattr(), так иsuper(). Этот атрибут динамичен и может изменяться при обновлении иерархии наследования.Если второй аргумент опущен, возвращаемый объект super является несвязанным. Если второй аргумент — объект, то
isinstance(obj, type)должно быть истинным. Если второй аргумент — тип, тоissubclass(type2, type)должно быть истинным (это полезно для методов класса).Существует два типичных случая использования super. В иерархии классов с одиночным наследованием super можно использовать для ссылки на родительские классы без явного их именования, что повышает читаемость кода. Это использование аналогично использованию super в других языках программирования.
Второй случай использования — поддержка кооперативного множественного наследования в динамичной среде выполнения. Этот случай уникален для Python и не встречается в статически компилируемых языках или языках, поддерживающих только одиночное наследование. Это позволяет реализовывать «диаграммы ромбов», где несколько базовых классов реализуют один и тот же метод. Хороший дизайн требует, чтобы такие реализации имели одинаковую сигнатуру вызова в каждом случае (потому что порядок вызовов определяется во время выполнения, потому что этот порядок адаптируется к изменениям в иерархии классов и потому что этот порядок может включать в себя братерские классы, которые неизвестны до времени выполнения).
Для обоих случаев типичный вызов super-класса выглядит так:
class C(B): def method(self, arg): super().method(arg) # This does the same thing as: # super(C, self).method(arg)Помимо поиска методов,
super()также работает с поиском атрибутов. Одним из возможных случаев использования является вызов дескрипторов в родительском или братерском классе.Обратите внимание, что
super()реализуется как часть процесса связывания для явных поисков атрибутов с точкой, таких какsuper().__getitem__(name). Это делается путём реализации собственного метода__getattribute__()для поиска классов в предсказуемом порядке, который поддерживает кооперативное множественное наследование. Соответственно,super()не определено для неявных поисков, использующих операторы или выражения, такие какsuper()[name].Также обратите внимание, что, помимо формы с нулевым аргументом,
super()не ограничено использованием внутри методов. Форма с двумя аргументами точно задаёт аргументы и делает соответствующие ссылки. Форма с нулевым аргументом работает только внутри определения класса, так как компилятор заполняет необходимые детали для правильного извлечения определяемого класса, а также доступа к текущему экземпляру для обычных методов.Практические рекомендации по проектированию кооперативных классов с помощью
super()см. в руководстве по использованию super().
- класс tuple
- класс tuple(iterable)
-
tuple— это не функция, а неизменяемый тип последовательности, как описано в Кортежах и Типы последовательностей — список, кортеж, диапазон.
-
class type(object) - класс type(name, bases, dict, **kwds)
-
С одним аргументом возвращает тип объекта object. Возвращаемое значение — объект типа, и, как правило, совпадает с объектом, возвращаемым
object.__class__.Для проверки типа объекта рекомендуется использовать встроенную функцию
isinstance(), так как она учитывает подклассы.С тремя аргументами возвращает новый объект типа. Это по сути динамическая форма оператора
class. Строка name — имя класса и становится атрибутом__name__. Кортеж bases содержит базовые классы и становится атрибутом__bases__; если он пустой, добавляетсяobject, конечный базовый класс всех классов. Словарь dict содержит определения атрибутов и методов для тела класса; он может быть скопирован или обернут перед тем, как стать атрибутом__dict__. Следующие два оператора создают идентичные объектыtype:>>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1))См. также Объекты типа.
Ключевые аргументы, переданные в форме с тремя аргументами, передаются соответствующей механике метаклассов (обычно
__init_subclass__()) так же, как ключевые слова в определении класса (кроме metaclass).См. также Настройка создания класса.
Изменено в версии 3.6: Подклассы
type, не переопределяющиеtype.__new__, больше не могут использовать форму с одним аргументом для получения типа объекта.
-
vars() - vars(object)
-
Возвращает атрибут
__dict__для модуля, класса, экземпляра или любого другого объекта с атрибутом__dict__.Объекты, такие как модули и экземпляры, имеют обновляемый атрибут
__dict__; однако, другие объекты могут иметь ограничения на запись в атрибуты__dict__(например, классы используютtypes.MappingProxyTypeдля предотвращения прямых обновлений словаря).Без аргумента,
vars()работает какlocals(). Обратите внимание, что словарь локальных переменных полезен только для чтения, так как обновления словаря локальных переменных игнорируются.Исключение
TypeErrorгенерируется, если указан объект, но у него нет атрибута__dict__(например, если его класс определяет атрибут__slots__).
-
zip(*iterables, strict=False) -
Итерируйтесь по нескольким итерируемым объектам параллельно, создавая кортежи с элементом из каждого из них.
Пример:
>>> for item in zip([1, 2, 3], ['sugar', 'spice', 'everything nice']): ... print(item) ... (1, 'sugar') (2, 'spice') (3, 'everything nice')
Более формально:
zip()возвращает итератор кортежей, где i-й кортеж содержит i-й элемент из каждого из аргументных итерируемых объектов.Другой способ понять
zip()— это преобразование строк в столбцы, а столбцов — в строки. Это аналогично транспонированию матрицы.zip()является ленивым: элементы не будут обрабатываться, пока не будет итерироваться по итерируемому объекту, например, с помощью циклаforили обертывания вlist.Следует учитывать, что итерируемые объекты, передаваемые в
zip(), могут иметь разную длину; иногда по дизайну, а иногда из-за ошибки в коде, который подготовил эти итерируемые объекты. Python предлагает три различных подхода к решению этой проблемы:-
По умолчанию
zip()останавливается, когда самый короткий итерируемый объект исчерпан. Он проигнорирует оставшиеся элементы в более длинных итерируемых объектах, обрезая результат до длины самого короткого итерируемого объекта:>>> list(zip(range(3), ['fee', 'fi', 'fo', 'fum'])) [(0, 'fee'), (1, 'fi'), (2, 'fo')]
-
zip()часто используется в случаях, когда предполагается, что итерируемые объекты имеют одинаковую длину. В таких случаях рекомендуется использоватьstrict=Trueвариант. Его вывод такой же, как у обычногоzip():>>> list(zip(('a', 'b', 'c'), (1, 2, 3), strict=True)) [('a', 1), ('b', 2), ('c', 3)]В отличие от поведения по умолчанию, он вызывает
ValueError, если один итерируемый объект исчерпан раньше других:>>> for item in zip(range(3), ['fee', 'fi', 'fo', 'fum'], strict=True): ... print(item) ... (0, 'fee') (1, 'fi') (2, 'fo') Traceback (most recent call last): ... ValueError: zip() argument 2 is longer than argument 1
Без аргумента
strict=True, любая ошибка, которая приводит к итерируемым объектам разной длины, будет проигнорирована, что может проявиться как трудноуловимая ошибка в другой части программы. - Короткие итерируемые объекты можно дополнить постоянным значением, чтобы все итерируемые объекты имели одинаковую длину. Это делается с помощью
itertools.zip_longest().
Крайние случаи: С одним аргументом итерируемого объекта
zip()возвращает итератор 1-кортежей. Без аргументов он возвращает пустой итератор.Советы и хитрости:
- Гарантируется левосторонний порядок оценки итерируемых объектов. Это позволяет использовать идиому для группирования числового ряда в группы длиной n с использованием
zip(*[iter(s)]*n, strict=True). Это повторяет один и тот же итераторnраз, чтобы каждый выходной кортеж содержал результатnвызовов итератора. Это приводит к разделению входных данных на куски длиной n. -
zip()в сочетании с оператором*может использоваться для распаковки списка:>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> list(zip(x, y)) [(1, 4), (2, 5), (3, 6)] >>> x2, y2 = zip(*zip(x, y)) >>> x == list(x2) and y == list(y2) True
Изменено в версии 3.10: Добавлен аргумент
strict. -
-
__import__(name, globals=None, locals=None, fromlist=(), level=0) -
Примечание
Это расширенная функция, которая не требуется в повседневной работе с Python, в отличие от
importlib.import_module().Эта функция вызывается оператором
import. Она может быть заменена (импортировав модульbuiltinsи присвоивbuiltins.__import__) для изменения семантики оператораimport, но это настоятельно не рекомендуется, поскольку обычно проще использовать импортные плагины (см. PEP 302), чтобы достичь тех же целей и не вызывать проблем с кодом, который предполагает использование реализации импорта по умолчанию. Прямое использование__import__()также не рекомендуется в пользуimportlib.import_module().Функция импортирует модуль name, потенциально используя заданные globals и locals, чтобы определить, как интерпретировать имя в контексте пакета. fromlist задает имена объектов или подмодулей, которые должны быть импортированы из модуля, заданного параметром name. Стандартная реализация вообще не использует аргумент locals и использует globals только для определения контекста пакета оператора
import.level указывает, использовать ли абсолютный или относительный импорт. Значение 0 (по умолчанию) означает, что выполнять только абсолютные импорты. Положительные значения для level указывают количество родительских каталогов для поиска относительно каталога модуля, вызывающего
__import__()(см. PEP 328 для получения подробностей).Когда переменная name имеет вид
package.module, обычно возвращается верхнеуровневый пакет (имя до первой точки), а не модуль, названный name. Однако, когда задан непустой аргумент fromlist, возвращается модуль, названный name.Например, оператор
import spamприводит к байткоду, напоминающему следующий код:spam = __import__('spam', globals(), locals(), [], 0)Оператор
import spam.hamприводит к следующему вызову:spam = __import__('spam.ham', globals(), locals(), [], 0)Обратите внимание, как
__import__()возвращает верхнеуровневый модуль в этом случае, потому что это объект, связанный с именем операторомimport.С другой стороны, оператор
from spam.ham import eggs, sausage as sausприводит к_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) eggs = _temp.eggs saus = _temp.sausageЗдесь модуль
spam.hamвозвращается из__import__(). Из этого объекта извлекаются имена для импорта и присваиваются соответствующим именам.Если вам нужно просто импортировать модуль (возможно, внутри пакета) по имени, используйте
importlib.import_module().Изменено в версии 3.3: Отрицательные значения для level больше не поддерживаются (что также изменяет значение по умолчанию на 0).
Изменено в версии 3.9: Когда используются командно-строковые опции
-Eили-I, переменная средыPYTHONCASEOKтеперь игнорируется.
Примечания
-
1 -
Обратите внимание, что анализатор принимает только соглашение о конце строки в стиле Unix. Если вы читаете код из файла, убедитесь, что используете режим преобразования строк new line для преобразования строк в стиле Windows или Mac.
© 2001–2023 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.11/library/functions.html