Встроенные функции
Интерпретатор 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(), используя escapes\x,\u, или\U. Это генерирует строку, аналогичную возвращаемойrepr()в Python 2.
-
bin(x) -
Преобразует целое число в двоичную строку с префиксом «0b». Результат — допустимое выражение Python. Если x не объект Python
int, он должен определять метод__index__(), возвращающий целое число. Некоторые примеры:>>> bin(3) '0b11' >>> bin(-10) '-0b1010'
Если префикс «0b» желателен или нет, можно использовать любой из следующих способов.
>>> format(14, '#b'), format(14, 'b') ('0b1110', '1110') >>> f'{14:#b}', f'{14:b}' ('0b1110', '1110')См. также
format()для получения дополнительной информации.
-
class bool(object=False, /) -
Возвращает логическое значение, т. е. одно из
TrueилиFalse. Аргумент преобразуется с помощью стандартной процедуры проверки истинности. Если аргумент ложный или опущен, возвращаетсяFalse; в противном случае возвращаетсяTrue. Классboolявляется подклассомint(см. Числовые типы — int, float, complex). Его нельзя подклассировать дальше. Его единственными экземплярами являютсяFalseиTrue(см. Булевый тип - bool).Изменено в версии 3.7: Параметр теперь только позиционный.
-
breakpoint(*args, **kws) -
Эта функция переводит вас в отладчик в месте вызова. Конкретно, она вызывает
sys.breakpointhook(), передаваяargsиkwsнапрямую. По умолчанию,sys.breakpointhook()вызываетpdb.set_trace(), ожидая никаких аргументов. В этом случае это просто удобная функция, чтобы вам не приходилось явно импортироватьpdbили писать столько кода, чтобы войти в отладчик. Однакоsys.breakpointhook()можно установить на другую функцию, иbreakpoint()автоматически вызовет её, позволяя вам зайти в отладчик по вашему выбору. Еслиsys.breakpointhook()недоступен, эта функция возбудитRuntimeError.По умолчанию, поведение
breakpoint()можно изменить с помощью переменной окруженияPYTHONBREAKPOINT. Подробности использования см. вsys.breakpointhook().Обратите внимание, что это не гарантируется, если
sys.breakpointhook()был заменен.Возбуждает событие аудита
builtins.breakpointс аргументомbreakpointhook.Добавлен в версии 3.7.
- класс 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) -
Возвращает строку, представляющую символ, код Юникода которого — целое число 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, удалено в версии 3.13: Методы класса больше не могут оборачивать другие дескрипторы, такие как
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 это оно — флаги (функции будущих версий и опции компилятора) в окружающем коде игнорируются.Опции компилятора и будущие возможности задаются битами, которые можно объединять побитово ИЛИ для задания нескольких опций. Битовая маска, необходимая для задания конкретной функции будущих версий, может быть найдена как атрибут
compiler_flagу экземпляра_Featureв модуле__future__. Флаги компилятора можно найти в модулеastс префиксомPyCF_.Аргумент optimize указывает уровень оптимизации компилятора; значение по умолчанию
-1выбирает уровень оптимизации интерпретатора, заданный опциями-O. Явные уровни —0(нет оптимизации;__debug__истинно),1(удаляются утверждения,__debug__ложно) или2(удаляются также строковые документации).Эта функция генерирует
SyntaxError, если скомпилированный исходный код недействителен, иValueError, если исходный код содержит нулевые байты.Если вы хотите разобрать код Python в его представление AST, см.
ast.parse().Вызывает событие аудита аудита
compileс аргументамиsourceиfilename. Это событие может быть вызвано также при неявной компиляции.Примечание
При компиляции строки с многострочным кодом в режимах
'single'или'eval'вход должен завершаться по меньшей мере одним символом новой строки. Это облегчает обнаружение незавершенных и завершенных инструкций в модулеcode.Предупреждение
Возможна аварийная остановка интерпретатора Python из-за слишком длинной/сложной строки при компиляции в объект AST из-за ограничений глубины стека в компиляторе AST Python.
Изменено в версии 3.2: Разрешено использование строк перевода Windows и Mac. Также, вход в режиме
'exec'больше не должен заканчиваться новой строкой. Добавлен параметр optimize.Изменено в версии 3.5: Ранее,
TypeErrorгенерировался при встрече нулевых байтов в source.Добавлен в версии 3.8:
ast.PyCF_ALLOW_TOP_LEVEL_AWAITтеперь может быть передан в flags для включения поддержки глобальныхawait,async for, иasync with.
-
class complex(number=0, /) - class complex(string, /)
- class complex(real=0, imag=0)
-
Преобразует строку или число в комплексное число, или создает комплексное число из действительной и мнимой частей.
Примеры:
>>> complex('+1.23') (1.23+0j) >>> complex('-4.5j') -4.5j >>> complex('-1.23+4.5j') (-1.23+4.5j) >>> complex('\t( -1.23+4.5J )\n') (-1.23+4.5j) >>> complex('-Infinity+NaNj') (-inf+nanj) >>> complex(1.23) (1.23+0j) >>> complex(imag=-4.5) -4.5j >>> complex(-1.23, 4.5) (-1.23+4.5j)Если аргумент — строка, она должна содержать либо действительную часть (в формате, аналогичном
float()), либо мнимую часть (в том же формате, но с'j'или'J'суффиксом), или и действительную, и мнимую части (знак мнимой части в этом случае обязателен). Строка может быть необязательно окружена пробелами и круглыми скобками'('и')', которые игнорируются. Строка не должна содержать пробелов между'+','-','j'или'J'суффиксом и десятичным числом. Например,complex('1+2j')допустимо, ноcomplex('1 + 2j')генерируетValueError. Более точно, вход должен соответствовать правилуcomplexvalueв следующей грамматике, после удаления скобок и начальных и конечных пробелов:complexvalue ::= floatvalue | floatvalue ("j" | "J") | floatvalue sign absfloatvalue ("j" | "J")Если аргумент — число, конструктор служит преобразованием типа, аналогично
intиfloat. Для общего объекта Pythonx,complex(x)делегируетx.__complex__(). Если__complex__()не определён, то используется__float__(). Если__float__()не определён, то используется__index__().Если указаны два аргумента или используются ключевые аргументы, каждый аргумент может быть любого числового типа (включая комплексный). Если оба аргумента — действительные числа, возвращается комплексное число с действительной частью real и мнимой частью imag. Если оба аргумента — комплексные числа, возвращается комплексное число с действительной частью
real.real-imag.imagи мнимой частьюreal.imag+imag.real. Если один из аргументов — действительное число, в вышеуказанных выражениях используется только его действительная часть.Если все аргументы опущены, возвращается
0j.Тип комплексных чисел описан в Числовые типы — 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), но может быть на 1 меньше этого. В любом случаеq * b + a % bочень близок к a, еслиa % bне равно нулю, оно имеет тот же знак, что и b, и0 <= abs(a % b) < abs(b).
-
enumerate(iterable, start=0) -
Возвращает объект enumerate. iterable должен быть последовательностью, итератором или каким-либо другим объектом, поддерживающим итерацию. Метод
__next__()возвращаемого итератораenumerate()возвращает кортеж, содержащий счётчик (от start, который по умолчанию равен 0) и значения, полученные при итерации по iterable.>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
Эквивалентно:
def enumerate(iterable, start=0): n = start for elem in iterable: yield n, elem n += 1
-
eval(source, /, globals=None, locals=None) -
- Параметры:
-
-
source (
str| объект кода) – Выражение на Python. -
globals (
dict|None) – Глобальное пространство имён (по умолчанию:None). -
locals (отображение |
None) – Локальное пространство имён (по умолчанию:None).
-
source (
- Возвращает:
-
Результат вычисленного выражения.
- Возбуждает:
-
Синтаксические ошибки сообщаются как исключения.
Предупреждение
Эта функция выполняет произвольный код. Вызов её с пользовательским вводом может привести к уязвимостям безопасности.
Аргумент expression анализируется и вычисляется как выражение Python (в техническом смысле, список условий) с использованием словарей globals и locals в качестве глобального и локального пространства имён. Если словарь globals присутствует и не содержит значения для ключа
__builtins__, ссылка на словарь встроенного модуляbuiltinsвставляется под этим ключом перед анализом expression. Таким образом, вы можете контролировать доступные встроенные функции выполняемого кода, вставив свой собственный__builtins__словарь в globals перед передачей его вeval(). Если отображение locals опущено, оно по умолчанию устанавливается равным словарю globals. Если оба отображения опушены, выражение выполняется в среде, где вызываетсяeval(). Обратите внимание, что eval() будет иметь доступ только к вложенным областям видимости (нелокальным переменным) в окружающем окружении, если они уже ссылаются на область видимости, которая вызываетeval()(например, через инструкциюnonlocal).Пример:
>>> x = 1 >>> eval('x+1') 2Эта функция также может использоваться для выполнения произвольных объектов кода (таких как те, которые создаются функцией
compile()). В этом случае передайте объект кода вместо строки. Если объект кода был скомпилирован с'exec'в качестве аргумента mode, значение, возвращаемоеeval(), будетNone.Подсказки: динамическое выполнение инструкций поддерживается функцией
exec(). Функцииglobals()иlocals()возвращают текущие глобальный и локальный словари, что может быть полезно для передачи вeval()илиexec().Если переданный источник является строкой, тогда ведущие и хвостовые пробелы и табуляции удаляются.
См.
ast.literal_eval()для функции, которая может безопасно оценивать строки с выражениями, содержащими только литералы.Возбуждает событие аудита
execс объектом кода в качестве аргумента. Также могут быть возбуждены события компиляции кода.Изменено в версии 3.13: Аргументы globals и locals теперь могут передаваться как ключевые слова.
Изменено в версии 3.13: Семантика локального пространства имён по умолчанию была скорректирована, как описано для встроенной функции
locals().
-
exec(source, /, globals=None, locals=None, *, closure=None) -
Предупреждение
Эта функция выполняет произвольный код. Вызов её с пользовательским вводом может привести к уязвимостям безопасности.
Эта функция поддерживает динамическое выполнение кода Python. source должен быть либо строкой, либо объектом кода. Если это строка, строка анализируется как набор инструкций Python, которые затем выполняются (если не происходит синтаксической ошибки). [1] Если это объект кода, он просто выполняется. Во всех случаях ожидается, что выполняемый код будет валиден как входной файл (см. раздел Ввод из файла в Руководстве по справочной информации). Имейте в виду, что инструкции
nonlocal,yieldиreturnне могут использоваться вне определений функций даже в контексте кода, переданного в функциюexec(). Значение возврата —None.Во всех случаях, если необязательные части опущены, код выполняется в текущей области видимости. Если передан только globals, он должен быть словарем (а не подклассом словаря), который будет использоваться как для глобальных, так и для локальных переменных. Если заданы globals и locals, они используются для глобальных и локальных переменных соответственно. Если задан, locals может быть любым объектом отображения. Помните, что на уровне модуля globals и locals — это один и тот же словарь.
Примечание
Когда
execполучает два отдельных объекта в качестве globals и locals, код выполняется так, как если бы он был встроен в определение класса. Это означает, что функции и классы, определенные в выполняемом коде, не смогут получить доступ к переменным, присвоенным на верхнем уровне (так как переменные верхнего уровня обрабатываются как переменные класса в определении класса).Если словарь globals не содержит значения для ключа
__builtins__, ссылка на словарь встроенного модуляbuiltinsвставляется под этим ключом. Таким образом, вы можете контролировать доступные встроенные функции выполняемого кода, вставив свой собственный__builtins__словарь в globals перед передачей его вexec().Аргумент closure указывает на замыкание — кортеж из cellvars. Он допустим только тогда, когда объект object является объектом кода, содержащим свободные (замыкания) переменные. Длина кортежа должна точно соответствовать длине атрибута
co_freevarsобъекта кода.Возбуждает событие аудита
execс объектом кода в качестве аргумента. Также могут быть возбуждены события компиляции кода.Примечание
Встроенные функции
globals()иlocals()возвращают текущее глобальное и локальное пространство имён соответственно, что может быть полезно для передачи в качестве второго и третьего аргумента функцииexec().Примечание
По умолчанию locals ведут себя так, как описано для функции
locals()ниже. Передайте явный словарь locals, если вам нужно увидеть эффекты кода на locals после возвращения функцииexec().Изменено в версии 3.11: Добавлен параметр closure.
Изменено в версии 3.13: Аргументы globals и locals теперь могут передаваться как ключевые слова.
Изменено в версии 3.13: Семантика локального пространства имён по умолчанию была скорректирована, как описано для встроенной функции
locals().
-
filter(function, iterable) -
Создаёт итератор из тех элементов iterable, для которых функция function истинна. 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 ложна.
-
class float(number=0.0, /) - class float(string, /)
-
Возвращает число с плавающей точкой, построенное из числа или строки.
Примеры:
>>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -infЕсли аргумент является строкой, она должна содержать десятичное число, необязательно с предшествующим знаком и необязательно заключённым в пробелы. Необязательный знак может быть
'+'или'-'; знак'+'не влияет на возвращаемое значение. Аргумент также может быть строкой, представляющей NaN (не число) или положительную или отрицательную бесконечность. Более точно, вход должен соответствовать правилу грамматического разбораfloatvalueв следующей грамматике после удаления начальных и конечных пробельных символов:sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" digit ::= <a Unicode decimal digit, i.e. characters in Unicode general category Nd> digitpart ::= digit (["_"] digit)* number ::= [digitpart] "." digitpart | digitpart ["."] exponent ::= ("e" | "E") [sign] digitpart floatnumber ::= number [exponent] absfloatvalue ::= floatnumber | infinity | nan floatvalue ::= [sign] absfloatvalueРегистр не имеет значения, поэтому, например, «inf», «Inf», «INFINITY» и «iNfINity» — все приемлемые варианты записи положительной бесконечности.
В противном случае, если аргумент является целым или дробным числом, возвращается число с плавающей точкой с таким же значением (в пределах точности чисел с плавающей точкой Python). Если аргумент выходит за пределы диапазона Python float, будет возбуждено исключение
OverflowError.Для общего объекта Python
x,float(x)делегируетсяx.__float__(). Если__float__()не определён, то используется__index__().Если аргумент не указан, возвращается
0.0.Тип float описан в Числовые типы — int, float, complex.
Изменено в версии 3.6: Разрешено группирование цифр с помощью символов подчеркивания, как в литералах кода.
Изменено в версии 3.7: Параметр теперь является только позиционным.
Изменено в версии 3.8: Переход к
__index__()если__float__()не определён.
-
format(value, format_spec='') -
Преобразует значение в «форматированное» представление, управляемое format_spec. Интерпретация format_spec будет зависеть от типа аргумента value; однако, существует стандартный синтаксис форматирования, используемый большинством встроенных типов: Минимальный язык спецификаций форматирования.
По умолчанию format_spec — это пустая строка, которая обычно даёт тот же эффект, что и вызов
str(value).Вызов
format(value, format_spec)преобразуется вtype(value).__format__(value, format_spec), что обходит словарь экземпляра при поиске метода__format__()значения. ИсключениеTypeErrorгенерируется, если поиск метода достигаетobject, а format_spec не пустая строка, или если format_spec или возвращаемое значение не являются строками.Изменено в версии 3.4:
object().__format__(format_spec)вызываетTypeError, если format_spec не пустая строка.
- class frozenset(iterable=set())
-
Возвращает новый объект
frozenset, необязательно с элементами, взятыми из iterable.frozenset— встроенный класс. См.frozensetи Типы множеств — set, frozenset для получения документации по этому классу.Для других контейнеров см. встроенные классы
set,list,tupleиdict, а также модульcollections.
-
getattr(object, name) - getattr(object, name, default)
-
Возвращает значение атрибута с именем object. name должно быть строкой. Если строка является именем одного из атрибутов объекта, результат — значение этого атрибута. Например,
getattr(x, 'foobar')эквивалентноx.foobar. Если атрибут с указанным именем не существует, возвращается default, если он предоставлен, в противном случае возбуждаетсяAttributeError. name не обязательно должен быть идентификатором Python (см.setattr()).Примечание
Поскольку искажение имени частных атрибутов (атрибуты с двумя предшествующими подчёркиваниями) происходит на этапе компиляции, необходимо вручную исказить имя частного атрибута, чтобы извлечь его с помощью
getattr().
-
globals() -
Возвращает словарь, реализующий текущее пространство имён модуля. Для кода внутри функций это устанавливается при определении функции и остаётся неизменным независимо от того, где функция вызывается.
-
hasattr(object, name) -
Аргументы — объект и строка. Результат —
Trueесли строка является именем одного из атрибутов объекта,Falseесли нет. (Это реализуется путём вызоваgetattr(object, name)и проверки, вызывает ли онAttributeErrorили нет.)
-
hash(object) -
Возвращает значение хеша объекта (если оно есть). Значения хеша — целые числа. Они используются для быстрого сравнения ключей словаря во время поиска в словаре. Числовые значения, сравниваемые как равные, имеют одинаковое значение хеша (даже если они разных типов, как это происходит с 1 и 1.0).
Примечание
Для объектов с настраиваемыми методами
__hash__()обратите внимание, чтоhash()усекает возвращаемое значение в зависимости от разрядности машины-хозяина.
-
help() - help(request)
-
Вызывает встроенную справочную систему. (Эта функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная справочная система запускается в консоли интерпретатора. Если аргумент является строкой, то строка рассматривается как имя модуля, функции, класса, метода, ключевого слова или темы документации, и страница справки печатается в консоли. Если аргумент — любой другой тип объекта, генерируется страница справки по объекту.
Обратите внимание, что если в списке параметров функции появляется косая черта (/), при вызове
help(), это означает, что параметры до косой черты являются только позиционными. Более подробную информацию см. в разделе FAQ о только позиционных параметрах.Эта функция добавляется в встроенное пространство имён модулем
site.
-
hex(x) -
Преобразовать целое число в строку в шестнадцатеричном формате в нижнем регистре с префиксом «0x». Если x не является объектом Python
int, он должен определять метод__index__(), возвращающий целое число. Некоторые примеры:>>> hex(255) '0xff' >>> hex(-42) '-0x2a'
Если требуется преобразовать целое число в шестнадцатеричную строку в верхнем или нижнем регистре с префиксом или без, можно использовать любой из следующих способов:
>>> '%#x' % 255, '%x' % 255, '%X' % 255 ('0xff', 'ff', 'FF') >>> format(255, '#x'), format(255, 'x'), format(255, 'X') ('0xff', 'ff', 'FF') >>> f'{255:#x}', f'{255:x}', f'{255:X}' ('0xff', 'ff', 'FF')См. также
format()для получения дополнительной информации.См. также
int()для преобразования шестнадцатеричной строки в целое число с основанием 16.Примечание
Для получения шестнадцатеричной строковой представления числа с плавающей точкой используйте метод
float.hex().
-
id(object) -
Возвращает «идентификатор» объекта. Это целое число, гарантированно уникальное и постоянное для данного объекта в течение его жизненного цикла. Два объекта с непересекающимися жизненными циклами могут иметь одинаковое значение
id().Подробность реализации CPython: Это адрес объекта в памяти.
Возбуждает событие аудита
builtins.idс аргументомid.
-
input() - input(prompt)
-
Если аргумент prompt присутствует, он выводится в стандартный вывод без заключительной новой строки. Затем функция считывает строку из ввода, преобразует её в строку (удаляя заключительную новую строку) и возвращает её. При чтении конца файла генерируется исключение
EOFError. Пример:>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"Если модуль
readlineбыл загружен, тоinput()будет использовать его для предоставления расширенных возможностей редактирования строк и истории.Возбуждает событие аудита
builtins.inputс аргументомpromptперед чтением ввода.Возбуждает событие аудита
builtins.input/resultс результатом после успешного чтения ввода.
-
class int(number=0, /) - class int(string, /, base=10)
-
Возвращает целое число, созданное из числа или строки, или возвращает
0при отсутствии аргументов.Примеры:
>>> int(123.45) 123 >>> int('123') 123 >>> int(' -12_345\n') -12345 >>> int('FACE', 16) 64206 >>> int('0xface', 0) 64206 >>> int('01110011', base=2) 115Если аргумент определяет
__int__(), тоint(x)возвращаетx.__int__(). Если аргумент определяет__index__(), он возвращаетx.__index__(). Если аргумент определяет__trunc__(), он возвращаетx.__trunc__(). Для чисел с плавающей точкой это обрезание к нулю.Если аргумент не является числом или если задан base, то он должен быть строкой, экземпляром
bytesилиbytearray, представляющей целое число в системе счисления base. Опционально, строка может быть снабжена префиксом+или-(без пробела между ними), иметь ведущие нули, быть окружённой пробелами и содержать одинарные нижние подчёркивания между цифрами.Строка целого числа в системе счисления n содержит цифры, каждая из которых представляет значение от 0 до n-1. Значения 0–9 могут быть представлены любыми десятичными цифрами Unicode. Значения 10–35 могут быть представлены
aдоz(илиAдоZ). По умолчанию base равен 10. Допустимые основания — 0 и от 2 до 36. Строки в системах счисления 2, 8 и 16 могут быть дополнительно снабжены префиксом0b/0B,0o/0O, или0x/0X, как и целочисленные литералы в коде. Для основания 0 строка интерпретируется аналогично целочисленному литералу в коде, то есть фактическое основание определяется префиксом как 2, 8, 10 или 16. Основание 0 также запрещает ведущие нули:int('010', 0)не допускается, в то время какint('010')иint('010', 8)— допустимы.Тип целого числа описан в Числовые типы — int, float, complex.
Изменено в версии 3.4: Если base не является экземпляром
int, и объект base имеет методbase.__index__, этот метод вызывается для получения целого числа для основания. Предыдущие версии использовалиbase.__int__вместоbase.__index__.Изменено в версии 3.6: Разрешено группирование цифр с подчёркиваниями, как в литералах кода.
Изменено в версии 3.7: Первый параметр теперь только позиционный.
Изменено в версии 3.8: Возвращается к
__index__(), если__int__()не определён.Изменено в версии 3.11: Делегирование в
__trunc__()устарело.Изменено в версии 3.11:
intстроковые вводы и строковые представления могут быть ограничены, чтобы помочь избежать атак с отказом в обслуживании. ИсключениеValueErrorгенерируется при превышении предела при преобразовании строки вintили при преобразованииintв строку, превышающее предел. См. документацию ограничение длины преобразования строковых целых чисел.
-
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).
- class list
- class list(iterable)
-
listфактически является изменяемым типом последовательности, как документировано в Списках и Типах последовательностей — list, tuple, range.
-
locals() -
Возвращает объект отображения, представляющий текущую локальную таблицу символов, с именами переменных в качестве ключей и их текущими привязанными ссылками в качестве значений.
В модульном пространстве, а также при использовании
exec()илиeval()с единственным пространством имен, эта функция возвращает то же пространство имен, что иglobals().В пространстве класса она возвращает пространство имен, которое будет передано конструктору метакласса.
При использовании
exec()илиeval()с отдельными аргументами local и global, она возвращает локальное пространство имен, переданное в вызов функции.Во всех вышеперечисленных случаях каждый вызов
locals()в данном кадре выполнения вернет один и тот же объект отображения. Изменения, внесённые через возвращённый объект отображения изlocals(), будут видны как присваивание, переприсваивание или удаление локальных переменных, а присваивание, переприсваивание или удаление локальных переменных немедленно повлияют на содержимое возвращённого объекта отображения.В оптимизированном пространстве имен (включая функции, генераторы и корутины), каждый вызов
locals()вместо этого возвращает новый словарь, содержащий текущие привязки локальных переменных функции и любые ссылки на нелокальные ячейки. В этом случае изменения привязки имен, внесённые через возвращённый словарь, не записываются обратно в соответствующие локальные переменные или ссылки на нелокальные ячейки, а присваивание, переприсваивание или удаление локальных переменных и ссылок на нелокальные ячейки не влияют на содержимое ранее возвращённых словарей.Вызов
locals()в рамках генератора в функции, генераторе или корутине эквивалентен вызову её в содержащем пространстве, за исключением того, что инициализированные переменные итерации генератора будут включены. В других пространствах имен он ведёт себя так, как если бы генератор выполнялся как вложенная функция.Вызов
locals()в рамках генераторного выражения эквивалентен вызову его в вложенной функции-генераторе.Изменено в версии 3.12: Поведение
locals()в генераторе было обновлено, как описано в PEP 709.Изменено в версии 3.13: В соответствии с PEP 667, семантика изменения объектов отображения, возвращённых этой функцией, теперь определена. Поведение в оптимизированных пространствах имен теперь такое, как описано выше. Помимо того, что оно определено, поведение в других пространствах имен остаётся неизменным по сравнению с предыдущими версиями.
-
map(function, iterable, *iterables) -
Возвращает итератор, который применяет function к каждому элементу iterable, возвращая результаты. Если передаются дополнительные аргументы iterable, function должен принимать столько аргументов и применяется к элементам из всех итерируемых объектов параллельно. С несколькими итерируемыми объектами итератор останавливается, когда исчерпывается самый короткий итерируемый объект. Для случаев, когда входные данные функции уже упорядочены в кортежи аргументов, см.
itertools.starmap().
-
max(iterable, *, key=None) - max(iterable, *, default, key=None)
- max(arg1, arg2, *args, key=None)
-
Возвращает наибольший элемент в итерируемом объекте или наибольший из двух или более аргументов.
Если предоставлен один позиционный аргумент, он должен быть итерируемым объектом. Возвращается наибольший элемент в итерируемом объекте. Если предоставлено два или более позиционных аргументов, возвращается наибольший из позиционных аргументов.
Существует два необязательных аргумента только с ключевыми словами. Аргумент key определяет одноаргументную функцию упорядочения, подобную той, которая используется для
list.sort(). Аргумент default определяет объект, который будет возвращен, если предоставленный итерируемый объект пустой. Если итерируемый объект пуст, а default не предоставлен, то возбуждаетсяValueError.Если несколько элементов максимальны, функция возвращает первый встретившийся. Это согласуется с другими средствами сортировки, сохраняющими стабильность, такими как
sorted(iterable, key=keyfunc, reverse=True)[0]иheapq.nlargest(1, iterable, key=keyfunc).Изменено в версии 3.4: Добавлен необязательный параметр default.
Изменено в версии 3.8: key может быть
None.
- class memoryview(object)
-
Возвращает объект «представления памяти», созданный из заданного аргумента. Более подробную информацию см. в разделе Представления памяти.
-
min(iterable, *, key=None) - min(iterable, *, default, key=None)
- min(arg1, arg2, *args, key=None)
-
Возвращает наименьший элемент в итерируемом объекте или наименьший из двух или более аргументов.
Если предоставлен один позиционный аргумент, он должен быть итерируемым объектом. Возвращается наименьший элемент в итерируемом объекте. Если предоставлено два или более позиционных аргументов, возвращается наименьший из этих аргументов.
Есть два необязательных ключевых аргумента. Аргумент key задает функцию упорядочения с одним аргументом, подобную той, которая используется для
list.sort(). Аргумент default задаёт объект, который должен быть возвращён, если предоставленный итерируемый объект пуст. Если итерируемый объект пуст и default не задан, генерируется исключениеValueError.Если несколько элементов минимальны, функция возвращает первый из встреченных. Это согласуется с другими инструментами, сохраняющими устойчивость сортировки, такими как
sorted(iterable, key=keyfunc)[0]иheapq.nsmallest(1, iterable, key=keyfunc).Изменено в версии 3.4: Добавлен ключевой параметр default.
Изменено в версии 3.8: key может быть
None.
-
next(iterator) - next(iterator, default)
-
Получает следующий элемент из итератора путём вызова его метода
__next__(). Если задан параметр default, он возвращается, если итератор исчерпан, в противном случае генерируется исключениеStopIteration.
-
class object -
Это базовый класс всех других классов. Он содержит методы, общие для всех экземпляров классов Python. При вызове конструктора он возвращает новый пустой объект. Конструктор не принимает никаких аргументов.
-
oct(x) -
Преобразует целое число в строку в восьмеричной системе счисления, с префиксом «0o». Результат является допустимым выражением Python. Если x не является объектом Python
int, он должен определять метод__index__(), возвращающий целое число. Например:>>> oct(8) '0o10' >>> oct(-56) '-0o70'
Если вы хотите преобразовать целое число в строку восьмеричной системы счисления с префиксом «0o» или без него, вы можете использовать любой из следующих способов.
>>> '%#o' % 10, '%o' % 10 ('0o12', '12') >>> format(10, '#o'), format(10, 'o') ('0o12', '12') >>> f'{10:#o}', f'{10:o}' ('0o12', '12')См. также
format()для получения дополнительной информации.
-
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) -
Открыть файл и вернуть соответствующий объект файла. Если файл не может быть открыт, генерируется
OSError. См. Чтение и запись файлов для получения дополнительных примеров использования этой функции.файл — это объект, подобный пути, указывающий на имя файла (абсолютное или относительное к текущей рабочей директории), который нужно открыть, или целочисленный дескриптор файла, который нужно обернуть. (Если указан дескриптор файла, он закрывается, когда закрывается возвращённый объект ввода-вывода, если не установлено closefd в
False.)режим — это необязательная строка, которая определяет режим открытия файла. По умолчанию это
'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с аргументамиpath,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) -
Возвращает основание в степени показатель; если модуль присутствует, возвращает основание в степени показатель по модулю модуль (вычисляется более эффективно, чем
pow(base, exp) % mod). Двухаргументная формаpow(base, exp)эквивалентна использованию оператора возведения в степень:base**exp.Аргументы должны иметь числовые типы. При смешанных типах операндов применяются правила преобразования для бинарных арифметических операторов. Для операндов
int, результат имеет тот же тип, что и операнды (после преобразования), за исключением случая, когда второй аргумент отрицательный; в этом случае все аргументы преобразуются к типу float, и возвращается результат типа float. Например,pow(10, 2)возвращает100, ноpow(10, -2)возвращает0.01. Для отрицательного основания типаintилиfloatи нецелого показателя, возвращается комплексное значение. Например,pow(-9, 0.5)возвращает значение, близкое к3j. В то время как для отрицательного основания типаintилиfloatс целым показателем, возвращается значение типа float. Например,pow(-9, 2.0)возвращает81.0.Для операндов
intоснования и показателя, если модуль присутствует, модуль также должен быть целого типа и модуль должен быть отличным от нуля. Если модуль присутствует и показатель отрицательный, основание должно быть взаимно простым с модулем. В этом случае возвращаетсяpow(inv_base, -exp, mod), где inv_base — обратное значение основания по модулю модуль.Вот пример вычисления обратного значения для
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: Строки документации объектов свойства теперь изменяемы.
-
__name__ -
Атрибут, хранящий имя свойства. Имя свойства можно изменить во время выполнения.
Добавлена в версии 3.13.
-
- class range(stop)
- class range(start, stop, step=1)
-
Вместо того, чтобы быть функцией,
rangeфактически является неизменяемым типом последовательности, как описано в Диапазонах и Типы последовательностей — list, tuple, range.
-
repr(object) -
Возвращает строку, содержащую удобочитаемое представление объекта. Для многих типов эта функция пытается вернуть строку, которая бы давала тот же объект при передаче в
eval(); в противном случае представление — это строка в угловых скобках, которая содержит имя типа объекта вместе с дополнительной информацией, часто включающей имя и адрес объекта. Класс может управлять тем, что возвращает эта функция для своих экземпляров, определив метод__repr__(). Еслиsys.displayhook()недоступен, эта функция вызоветRuntimeError.Этот класс имеет настраиваемое представление, которое может быть вычислено:
class Person: def __init__(self, name, age): self.name = name self.age = age def __repr__(self): return f"Person('{self.name}', {self.age})"
-
reversed(seq) -
Возвращает обратный итератор. seq должен быть объектом, у которого есть метод
__reversed__()или который поддерживает протокол последовательности (метод__len__()и метод__getitem__()с целочисленными аргументами, начиная с0).
-
round(number, ndigits=None) -
Возвращает number, округлённый до ndigits знаков после десятичной точки. Если ndigits опущено или равно
None, возвращает ближайшее целое число к входному значению.Для встроенных типов, поддерживающих
round(), значения округляются до ближайшего кратного 10 в степени минус ndigits; если два кратных одинаково близки, округление выполняется в сторону чётного значения (например, какround(0.5)иround(-0.5)являются0, иround(1.5)является2). Любое целое число является допустимым значением для ndigits (положительное, нулевое или отрицательное). Возвращаемое значение является целым числом, если ndigits опущено илиNone. В противном случае возвращаемое значение имеет тот же тип, что и number.Для общего объекта Python
number,roundделегирует вызовnumber.__round__.Примечание
Поведение
round()для чисел с плавающей точкой может быть неожиданным: например,round(2.675, 2)даёт2.67вместо ожидаемого2.68. Это не ошибка: это следствие того, что большинство десятичных дробей не могут быть точно представлены как числа с плавающей точкой. См. Арифметика чисел с плавающей точкой: проблемы и ограничения для получения дополнительной информации.
- 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) - класс slice(start, stop, step=None)
-
Возвращает объект slice, представляющий набор индексов, указанный
range(start, stop, step). Аргументы start и step по умолчаниюNone.-
start
-
stop
-
step -
Объекты слайсов имеют атрибуты только для чтения
start,stop, иstep, которые просто возвращают значения аргументов (или их значения по умолчанию). У них нет других явных функций; однако они используются пакетами NumPy и другими сторонними пакетами.
Объекты слайсов также генерируются при использовании расширенной синтаксической конструкции индексирования. Например:
a[start:stop:step]илиa[start:stop, i]. См.itertools.islice()для альтернативной версии, которая возвращает итератор.Изменено в версии 3.12: Объекты слайсов теперь хешируемые (при условии, что
start,stop, иstepхешируемые). -
-
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 рекомендует реализовать все шесть rich comparisons. Это поможет избежать ошибок при использовании одних и тех же данных с другими инструментами упорядочивания, такими как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__и теперь вызываются как обычные функции.
- класс str(object='')
- класс 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 может быть указан как ключевой аргумент.
Изменено в версии 3.12: Суммирование чисел с плавающей точкой переключено на алгоритм, обеспечивающий более высокую точность и лучшую коммутативность на большинстве сборок.
-
class super - класс super(тип, объект_или_тип=None)
-
Возвращает прокси-объект, который делегирует вызовы методов родительскому или соседнему классу тип. Это полезно для доступа к унаследованным методам, которые были переопределены в классе.
объект_или_тип определяет порядок разрешения методов для поиска. Поиск начинается с класса, расположенного сразу после тип.
Например, если
__mro__объекта объект_или_тип равенD -> B -> C -> A -> objectи значение тип равноB, тоsuper()ищетC -> A -> object.Атрибут
__mro__класса, соответствующего объект_или_тип, перечисляет порядок поиска разрешения методов, используемый какgetattr(), так иsuper(). Атрибут динамичен и может изменяться всякий раз, когда обновляется иерархия наследования.Если второй аргумент опущен, возвращаемый объект super не связан. Если второй аргумент — объект, то
isinstance(obj, type)должно быть истинным. Если второй аргумент — тип, тоissubclass(type2, type)должно быть истинным (это полезно для методов класса).При вызове непосредственно внутри обычного метода класса оба аргумента могут быть опущены («нульаргументный
super()»). В этом случае тип будет закрывающим классом, а объект будет первым аргументом непосредственно вложенной функции (обычноself). (Это означает, что нульаргументныйsuper()не будет работать как ожидается внутри вложенных функций, включая генераторы, которые неявно создают вложенные функции.)Существует два типичных варианта использования super. В иерархии классов с одиночным наследованием super может использоваться для ссылки на родительские классы без явного их именования, что делает код более поддерживаемым. Это использование тесно связано с использованием super в других языках программирования.
Второй вариант использования заключается в поддержке кооперативного множественного наследования в динамической среде выполнения. Этот вариант использования уникален для Python и не встречается в статически компилируемых языках или языках, которые поддерживают только одиночное наследование. Это позволяет реализовывать «диаграммы ромбов», где несколько базовых классов реализуют один и тот же метод. Хороший дизайн требует, чтобы такие реализации имели одинаковую сигнатуру вызова в каждом случае (потому что порядок вызовов определяется во время выполнения, потому что этот порядок адаптируется к изменениям в иерархии классов, и потому что этот порядок может включать соседние классы, которые неизвестны до времени выполнения).
Для обоих вариантов использования типичный вызов суперкласса выглядит следующим образом:
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(итерируемый_объект)
-
Вместо того, чтобы быть функцией,
tupleна самом деле является неизменяемым типом последовательностей, как описано в Кортежи и Типы последовательностей — список, кортеж, диапазон.
-
class type(object) - класс type(имя, базы, словарь, **kwds)
-
С одним аргументом, возвращает тип объекта. Возвращаемое значение — объект типа, и обычно это тот же объект, что и возвращается
object.__class__.Функция
isinstance()рекомендуется для проверки типа объекта, так как она учитывает подклассы.С тремя аргументами, возвращает новый объект типа. Это по существу динамическая форма инструкции
class. Строка имя — это имя класса и становится атрибутом__name__. Кортеж базы содержит базовые классы и становится атрибутом__bases__; если он пуст, добавляетсяobject, конечный базовый класс всех классов. Словарь словарь содержит определения атрибутов и методов для тела класса; он может быть скопирован или обернут перед тем, как стать атрибутом__dict__. Следующие две инструкции создают идентичныеtypeобъекты:>>> class X: ... a = 1 ... >>> X = type('X', (), dict(a=1))См. также:
Ключевые аргументы, переданные в форму с тремя аргументами, передаются в соответствующую механику метакласса (обычно
__init_subclass__()) так же, как и ключевые слова в определении класса (кроме metaclass).См. также Настройка создания классов.
Изменено в версии 3.6: Подклассы
type, которые не переопределяютtype.__new__больше не могут использовать одноаргументную форму для получения типа объекта.
-
vars() - vars(объект)
-
Возвращает атрибут
__dict__для модуля, класса, экземпляра или любого другого объекта с атрибутом__dict__.Объекты, такие как модули и экземпляры, имеют изменяемый атрибут
__dict__; однако, другие объекты могут иметь ограничения на запись для своих атрибутов__dict__(например, классы используютtypes.MappingProxyTypeдля предотвращения прямых обновлений словаря).Без аргумента,
vars()работает какlocals().Исключение
TypeErrorвозникает, если объект указан, но у него нет атрибута__dict__(например, если его класс определяет атрибут__slots__).Изменено в версии 3.13: Результат вызова этой функции без аргумента был обновлён, как описано для встроенной функции
locals().
-
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теперь игнорируется.
Примечания
© 2001–2024 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.13/library/functions.html