Встроенные функции
Интерпретатор Python содержит ряд встроенных функций и типов, которые всегда доступны. Они перечислены здесь в алфавитном порядке.
Встроенные функции | ||||
|---|---|---|---|---|
-
abs(x) -
Возвращает абсолютное значение числа. Аргумент может быть целым или вещественным числом. Если аргумент — комплексное число, возвращается его модуль.
-
all(iterable) -
Возвращает
True, если все элементы итерируемого объекта истинны (или если итерируемый объект пуст). Эквивалентно:def all(iterable): for element in iterable: if not element: return False return True
-
any(iterable) -
Возвращает
True, если любой элемент итерируемого объекта истинен. Если итерируемый объект пуст, возвращаетFalse. Эквивалентно:def any(iterable): for element in iterable: if element: return True return False
-
ascii(object) -
Как
repr(), возвращает строку, содержащую удобочитаемое представление объекта, но экранирует не-ASCII символы в строке, возвращаемойrepr(), используя\x,\uили\Uescapes. Это генерирует строку, аналогичную той, что возвращаетсяrepr()в Python 2.
-
bin(x) -
Преобразует целое число в двоичную строку с префиксом «0b». Результат является допустимым выражением Python. Если x не является объектом Python
int, он должен определять метод__index__(), возвращающий целое число. Некоторые примеры:>>> bin(3) '0b11' >>> bin(-10) '-0b1010'
Если префикс «0b» желателен или нет, вы можете использовать любой из следующих способов.
>>> format(14, '#b'), format(14, 'b') ('0b1110', '1110') >>> f'{14:#b}', f'{14:b}' ('0b1110', '1110')См. также
format()для получения дополнительной информации.
-
class bool([x]) -
Возвращает булево значение, т.е. одно из
TrueилиFalse. x преобразуется с помощью стандартной процедуры проверки истинности. Если x ложно или опущено, это возвращаетFalse; в противном случае возвращаетTrue. Классboolявляется подклассомint(см. Числовые типы — int, float, complex). Его нельзя дальше подклассифицировать. Единственными его экземплярами являютсяFalseиTrue(см. Булевы значения).
-
class bytearray([source[, encoding[, errors]]]) -
Возвращает новый массив байтов. Класс
bytearrayпредставляет собой изменяемую последовательность целых чисел в диапазоне 0 <= x < 256. Он имеет большинство обычных методов изменяемых последовательностей, описанных в Типы изменяемых последовательностей, а также большинство методов типаbytes, см. Операции с байтами и массивом байтов.Необязательный параметр source может использоваться для инициализации массива несколькими способами:
- Если это строка, вы также должны указать параметры encoding (и необязательно, errors);
bytearray()затем преобразует строку в байты с помощьюstr.encode(). - Если это целое число, массив будет иметь такой размер и будет инициализирован нулевыми байтами.
- Если это объект, соответствующий интерфейсу buffer, для инициализации массива байтов будет использоваться только для чтения буфер объекта.
- Если это итерируемый объект, он должен быть итерируемым объектом целых чисел в диапазоне
0 <= x < 256, которые используются в качестве начального содержимого массива.
Без аргумента создается массив размером 0.
См. также Типы бинарных последовательностей — bytes, bytearray, memoryview и Объекты bytearray.
- Если это строка, вы также должны указать параметры encoding (и необязательно, errors);
-
class 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()в этом разделе.Для получения дополнительной информации о методах класса, обратитесь к документации по стандартной иерархии типов в Стандартная иерархия типов.
-
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1) -
Компилирует source в объект кода или AST. Объекты кода могут быть выполнены с помощью
exec()илиeval(). source может быть обычной строкой, строкой байтов или объектом AST. Обратитесь к документации модуляastза информацией о работе с объектами AST.Аргумент filename должен указывать файл, из которого был прочитан код; передайте какое-либо узнаваемое значение, если он не был прочитан из файла (
'<string>'обычно используется).Аргумент mode указывает, какой вид кода необходимо скомпилировать; он может быть
'exec'если source состоит из последовательности операторов,'eval'если он состоит из одного выражения или'single'если он состоит из одного интерактивного оператора (в последнем случае выражения операторов, которые приводят к чему-то другому, чемNone, будут выведены).Необязательные аргументы flags и dont_inherit управляют тем, какие операторы future влияют на компиляцию source. Если ни один из них не присутствует (или оба равны нулю), код компилируется с теми операторами future, которые действуют в коде, вызывающем
compile(). Если аргумент flags задан, а dont_inherit нет (или равен нулю), то операторы future, указанные в аргументе flags, используются дополнительно к тем, которые использовались бы в любом случае. Если dont_inherit — это ненулевое целое число, то аргумент flags — это оно; операторы future, действующие вокруг вызова compile, игнорируются.Операторы future задаются битами, которые могут быть побитово объединены OR, чтобы указать несколько операторов. Битовая маска, необходимая для указания определённой функции, может быть найдена как атрибут
compiler_flagв объекте_Featureв модуле__future__.Аргумент optimize определяет уровень оптимизации компилятора; значение по умолчанию
-1выбирает уровень оптимизации интерпретатора, задаваемый параметрами-O. Явные уровни:0(без оптимизации;__debug__равно true),1(утверждения удаляются,__debug__равно false) или2(документационные строки также удаляются).Эта функция вызывает
SyntaxError, если скомпилированный исходный код недействителен, иValueError, если исходный код содержит нулевые байты.Если вы хотите разобрать код Python в его представление AST, см.
ast.parse().Примечание
При компиляции строки с многострочным кодом в режиме
'single'или'eval'входные данные должны завершаться как минимум одним символом новой строки. Это делается для облегчения обнаружения незавершенных и завершенных операторов в модулеcode.Предупреждение
Возможна ошибка интерпретатора Python с достаточно большой/сложной строкой при компиляции в объект AST из-за ограничений глубины стека в компиляторе AST Python.
Изменено в версии 3.2: Разрешено использование Windows и Mac новых строк. Также входные данные в режиме
'exec'больше не должны заканчиваться новой строкой. Добавлена параметр optimize.Изменено в версии 3.5: Ранее при обнаружении нулевых байтов в source выбрасывалось исключение
TypeError.
-
class complex([real[, imag]]) -
Возвращает комплексное число со значением real + imag*1j или преобразует строку или число в комплексное число. Если первый параметр — строка, она интерпретируется как комплексное число, и функция должна вызываться без второго параметра. Второй параметр никогда не может быть строкой. Каждый аргумент может быть любым числовым типом (включая комплексное). Если imag опущен, он по умолчанию равен нулю, и конструктор выполняет числовое преобразование, как
intиfloat. Если оба аргумента опущены, возвращается0j.Примечание
При преобразовании из строки строка не должна содержать пробелов вокруг центрального
+или-оператора. Например,complex('1+2j')допустимо, ноcomplex('1 + 2j')вызываетValueError.Тип
complexописан в Числовые типы — int, float, complex.Изменено в версии 3.6: Разрешено группировать цифры с помощью нижних подчеркиваний, как в литералах кода.
-
delattr(object, name) -
Это аналог функции
setattr(). Аргументы — объект и строка. Строка должна быть именем одного из атрибутов объекта. Функция удаляет указанный атрибут, если это разрешено объектом. Например,delattr(x, 'foobar')эквивалентноdel x.foobar.
-
class dict(**kwarg) -
class dict(mapping, **kwarg) -
class dict(iterable, **kwarg) -
Создаёт новый словарь. Объект
dict— это класс словарей. См.dictи Типы отображений — dict для документации по этому классу.Для других контейнеров см. встроенные классы
list,setиtuple, а также модульcollections.
-
dir([object]) -
Без аргументов возвращает список имён в текущей локальной области видимости. С аргументом пытается вернуть список допустимых атрибутов для этого объекта.
Если у объекта есть метод с именем
__dir__(), этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, реализующим пользовательскую функцию__getattr__()или__getattribute__(), настраивать способ, которымdir()сообщает об их атрибутах.Если объект не предоставляет
__dir__(), функция пытается собрать информацию из атрибута объекта__dict__, если он определён, и из его типа. Результирующий список не обязательно полный и может быть неточным, когда у объекта есть пользовательская функция__getattr__().Механизм
dir()по умолчанию ведёт себя по-разному с разными типами объектов, поскольку он пытается произвести наиболее релевантную, а не полную информацию:- Если объект — объект модуля, список содержит имена атрибутов модуля.
- Если объект — объект типа или класса, список содержит имена его атрибутов и рекурсивно атрибуты его базовых классов.
- В противном случае список содержит имена атрибутов объекта, имена атрибутов его класса и рекурсивно атрибуты базовых классов его класса.
Результирующий список отсортирован по алфавиту. Например:
>>> 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(sequence, start=0): n = start for elem in sequence: yield n, elem n += 1
-
eval(expression, globals=None, locals=None) -
Аргументы — строка и необязательные глобальные и локальные переменные. Если указаны, globals должно быть словарем. Если указан, locals может быть любым объектом отображения.
Аргумент expression разбирается и вычисляется как выражение Python (точнее, список условий) с использованием словарей globals и locals в качестве глобального и локального пространства имён. Если словарь globals присутствует и не содержит значения для ключа
__builtins__, ссылка на словарь встроенного модуляbuiltinsвставляется под этот ключ до разбора expression. Это означает, что expression обычно имеет полный доступ к стандартному модулюbuiltinsи ограниченные среды распространяются. Если словарь locals опущен, он по умолчанию равен словарю globals. Если оба словаря опущены, выражение выполняется в среде, в которой вызываетсяeval(). Возвращаемое значение — результат вычисленного выражения. Синтаксические ошибки сообщаются как исключения. Пример:>>> x = 1 >>> eval('x+1') 2Эта функция также может использоваться для выполнения произвольных объектов кода (например, созданных функцией
compile()). В этом случае передайте объект кода вместо строки. Если объект кода был скомпилирован с'exec'в качестве аргумента mode, возвращаемое значениеeval()будетNone.Подсказки: динамическое выполнение инструкций поддерживается функцией
exec(). Функцииglobals()иlocals()возвращают текущий глобальный и локальный словари, соответственно, что может быть полезно для передачи их для использованияeval()илиexec().См.
ast.literal_eval()для функции, которая может безопасно вычислять строки с выражениями, содержащими только литералы.
-
exec(object[, globals[, locals]]) -
Эта функция поддерживает динамическое выполнение кода Python. object должно быть либо строкой, либо объектом кода. Если это строка, строка анализируется как набор операторов Python, которые затем выполняются (если не возникает синтаксическая ошибка). 1 Если это объект кода, он просто выполняется. Во всех случаях ожидается, что выполняемый код будет допустим как входной файл (см. раздел «Входной файл» в Справочном руководстве). Обратите внимание, что операторы
returnиyieldне могут использоваться вне определений функций, даже в контексте кода, переданного функцииexec(). Возвращаемое значение —None.Во всех случаях, если необязательные части опущены, код выполняется в текущем пространстве имен. Если предоставлен только globals, он должен быть словарем, который будет использоваться для глобальных и локальных переменных. Если заданы globals и locals, они используются для глобальных и локальных переменных соответственно. Если задан locals, он может быть любым объектом-отображением. Помните, что на уровне модуля globals и locals — один и тот же словарь. Если функция exec получает два отдельных объекта как globals и locals, код будет выполняться так, как будто он вставлен в определение класса.
Если словарь globals не содержит значение для ключа
__builtins__, ссылка на словарь встроенного модуляbuiltinsвставляется под этим ключом. Таким образом, вы можете контролировать доступные встроенные функции для выполняемого кода, поместив свой собственный словарь__builtins__в globals перед передачей его функцииexec().
-
filter(function, iterable) -
Создаёт итератор из тех элементов iterable, для которых функция function возвращает True. iterable может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если function —
None, предполагается функция тождества, то есть удаляются все элементы iterable, которые ложны.Обратите внимание, что
filter(function, iterable)эквивалентно генераторному выражению(item for item in iterable if function(item)), если функция неNone, и(item for item in iterable if item), если функцияNone.См.
itertools.filterfalse()для дополнительной функции, возвращающей элементы iterable, для которых function возвращает False.
-
class float([x]) -
Возвращает число с плавающей точкой, созданное из числа или строки x.
Если аргумент — строка, она должна содержать десятичное число, необязательно с префиксом знака и необязательно вставленным в пробелы. Необязательный знак может быть
'+'или'-'; знак'+'не влияет на генерируемое значение. Аргумент также может представлять собой строку, представляющую NaN (не число), или положительную или отрицательную бесконечность. Более точно, вход должен соответствовать следующей грамматике после удаления начальных и конечных пробелов:sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" numeric_value ::= floatnumber | infinity | nan numeric_string ::= [sign] numeric_value
Здесь
floatnumber— форма литерала с плавающей точкой Python, описанная в Литералы с плавающей точкой. Регистр не имеет значения, поэтому, например, «inf», «Inf», «INFINITY» и «iNfINity» — это допустимые варианты написания для положительной бесконечности.В противном случае, если аргумент — целое или число с плавающей точкой, возвращается число с плавающей точкой с тем же значением (в пределах точности с плавающей точкой Python). Если аргумент выходит за пределы диапазона Python float, будет поднято исключение
OverflowError.Для общего объекта Python
x,float(x)делегирует вызовx.__float__().Если аргумент не задан, возвращается
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: Разрешено группирование цифр с помощью подчеркиваний, как в литералах кода.
-
format(value[, format_spec]) -
Преобразует значение value в «форматированное» представление, управляемое format_spec. Интерпретация format_spec зависит от типа аргумента value, однако существует стандартный синтаксис форматирования, используемый большинством встроенных типов: Форматный мини-язык.
По умолчанию format_spec — пустая строка, которая обычно даёт тот же результат, что и вызов
str(value).Вызов
format(value, format_spec)переводится вtype(value).__format__(value, format_spec), что пропускает словарь экземпляра при поиске метода__format__()объекта. ИсключениеTypeErrorгенерируется, если поиск метода достигаетobject, а format_spec не пуст, или если format_spec или возвращаемое значение не являются строками.Изменено в версии 3.4:
object().__format__(format_spec)генерирует исключениеTypeError, если format_spec не пустая строка.
-
class frozenset([iterable]) -
Возвращает новый объект
frozenset, необязательно с элементами из iterable.frozenset— встроенный класс. См.frozensetи Типы множеств — set, frozenset для документации по этому классу.Для других контейнеров см. встроенные классы
set,list,tupleиdict, а также модульcollections.
-
getattr(object, name[, default]) -
Возвращает значение именованного атрибута объекта object. name должно быть строкой. Если строка является именем одного из атрибутов объекта, результат — значение этого атрибута. Например,
getattr(x, 'foobar')эквивалентноx.foobar. Если именованный атрибут не существует, возвращается default, если он задан, в противном случае генерируется исключениеAttributeError.
-
globals() -
Возвращает словарь, представляющий текущую глобальную таблицу символов. Это всегда словарь текущего модуля (внутри функции или метода это модуль, в котором он определён, а не модуль, из которого он вызван).
-
hasattr(object, name) -
Аргументы — объект и строка. Результат —
Trueесли строка является именем одного из атрибутов объекта,False— если нет. (Это реализуется путём вызоваgetattr(object, name)и проверки, генерирует ли он исключениеAttributeErrorили нет.)
-
hash(object) -
Возвращает значение хеша объекта (если оно есть). Значения хеша — целые числа. Они используются для быстрого сравнения ключей словаря во время поиска в словаре. Числовые значения, которые сравниваются как равные, имеют одинаковое значение хеша (даже если они разных типов, как в случае 1 и 1.0).
Примечание
Для объектов с настраиваемыми методами
__hash__()обратите внимание, чтоhash()усекает возвращаемое значение в соответствии с разрядностью битовой ширины хост-машины. См.__hash__()для подробностей.
-
help([object]) -
Вызов встроенной системы справки. (Эта функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная система справки запускается в консоли интерпретатора. Если аргумент является строкой, то строка рассматривается как имя модуля, функции, класса, метода, ключевого слова или темы документации, и страница справки печатается в консоли. Если аргумент — любой другой тип объекта, генерируется страница справки по этому объекту.
Эта функция добавляется в встроенное пространство имён модулем
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: Это адрес объекта в памяти.
-
input([prompt]) -
Если аргумент prompt присутствует, он записывается в стандартный вывод без заключительного символа новой строки. Затем функция считывает строку из ввода, преобразует ее в строку (удаляя заключительную новую строку) и возвращает ее. При чтении EOF возбуждается исключение
EOFError. Пример:>>> s = input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"Если был загружен модуль
readline, тогдаinput()будет использовать его для предоставления расширенных возможностей редактирования строк и истории.
-
class int(x=0) -
class int(x, base=10) -
Возвращает объект целого типа, построенный из числа или строки x, или возвращает
0, если аргументы не указаны. Если x определяет__int__(),int(x)возвращаетx.__int__(). Если x определяет__trunc__(), оно возвращаетx.__trunc__(). Для чисел с плавающей точкой это отбрасывает дробную часть к нулю.Если x не является числом или если задан base, то x должен быть строкой, экземпляром
bytesилиbytearray, представляющим целочисленную литерал в системе счисления base. Допускается наличие префикса+или-(без пробела между ними) и пробелов вокруг литерала. Литерал в системе счисления base состоит из цифр от 0 до base-1, сaпоz(илиAпоZ) имеющими значения от 10 до 35. Значение по умолчанию для base — 10. Разрешенные значения — 0 и от 2 до 36. Литералы в системах счисления 2, 8 и 16 могут быть необязательно префиксрованы0b/0B,0o/0O, или0x/0X, как и целочисленные литералы в коде. Основание 0 означает интерпретацию точно как литерал кода, так что фактическое основание — 2, 8, 10 или 16, иint('010', 0)не является допустимым, в то время какint('010')является допустимым, а такжеint('010', 8).Тип целого числа описан в Числовые типы — int, float, complex.
Изменено в версии 3.4: Если base не является экземпляром
intи объект base имеет методbase.__index__, этот метод вызывается для получения целого числа для основания. Предыдущие версии использовалиbase.__int__вместоbase.__index__.Изменено в версии 3.6: Допускается группирование цифр с нижними подчеркиваниями, как в литералах кода.
-
isinstance(object, classinfo) -
Возвращает True, если аргумент object является экземпляром аргумента classinfo или (прямого, косвенного или виртуального) подкласса. Если object не является объектом заданного типа, функция всегда возвращает False. Если classinfo является кортежем объектов типов (или рекурсивно, других таких кортежей), то возвращает True, если object является экземпляром любого из указанных типов. Если classinfo не является типом или кортежем типов и таких кортежей, возбуждается исключение
TypeError.
-
issubclass(class, classinfo) -
Возвращает True, если class является подклассом (прямым, косвенным или виртуальным) classinfo. Класс считается подклассом самого себя. classinfo может быть кортежем объектов классов, в этом случае проверяется каждый элемент classinfo. В ином случае возбуждается исключение
iter(object[, sentinel]).
-
iter(object[, sentinel]) -
Возвращает объект-итератор. Первый аргумент интерпретируется очень по-разному в зависимости от наличия второго аргумента. Без второго аргумента object должен быть объектом коллекции, который поддерживает протокол итерации (метод
__iter__()), или он должен поддерживать протокол последовательности (метод__getitem__()с целочисленными аргументами, начиная с0). Если он не поддерживает ни один из этих протоколов, возбуждается исключениеTypeError. Если задан второй аргумент, sentinel, тогда object должен быть вызываемым объектом. Созданный в этом случае итератор будет вызывать object без аргументов для каждого вызова своего метода__next__(); если возвращаемое значение равно sentinel, возбуждаетсяStopIteration, иначе возвращается значение.См. также Типы итераторов.
Одно полезное применение второй формы
iter()— чтение строк из файла до тех пор, пока не будет достигнута определенная строка. Следующий пример считывает файл до тех пор, пока методreadline()не вернёт пустую строку:with open('mydata.txt') as fp: for line in iter(fp.readline, ''): process_line(line)
-
len(s) -
Возвращает длину (количество элементов) объекта. Аргументом может быть последовательность (например, строка, байты, кортеж, список или диапазон) или коллекция (например, словарь, множество или неизменяемое множество).
-
class list([iterable]) -
Вместо того, чтобы быть функцией,
listна самом деле является изменяемым типом последовательности, как описано в Списки и Типы последовательностей — list, tuple, range.
-
locals() -
Обновляет и возвращает словарь, представляющий текущую локальную таблицу символов. Свободные переменные возвращаются функцией
locals()при её вызове в блоках функций, но не в блоках классов.Примечание
Содержимое этого словаря не должно изменяться; изменения могут не повлиять на значения локальных и свободных переменных, используемых интерпретатором.
-
map(function, iterable, ...) -
Возвращает итератор, который применяет функцию function к каждому элементу iterable, возвращая результаты. Если передаются дополнительные аргументы iterable, function должна принимать столько аргументов и применяется к элементам из всех итерируемых объектов параллельно. При нескольких итерируемых объектах итератор останавливается, когда исчерпан самый короткий итерируемый объект. Для случаев, когда входные данные функции уже организованы в кортежи аргументов, см.
itertools.starmap().
-
max(iterable, *[, key, default]) -
max(arg1, arg2, *args[, key]) -
Возвращает наибольший элемент в итерируемом объекте или наибольший из двух или более аргументов.
Если задан один позиционный аргумент, он должен быть итерируемым объектом. Возвращается наибольший элемент в итерируемом объекте. Если задано два или более позиционных аргументов, возвращается наибольший из позиционных аргументов.
Есть два необязательных ключевых аргумента. Аргумент key задаёт функцию упорядочивания с одним аргументом, подобно той, что используется для
list.sort(). Аргумент default задаёт объект, который должен быть возвращён, если предоставленный итерируемый объект пустой. Если итерируемый объект пустой и default не указан, генерируется исключениеValueError.Если несколько элементов максимальны, функция возвращает первый из встреченных. Это согласуется с другими инструментами, сохраняющими устойчивость сортировки, такими как
sorted(iterable, key=keyfunc, reverse=True)[0]иheapq.nlargest(1, iterable, key=keyfunc).Введено в версии 3.4: Ключевой аргумент default.
-
memoryview(obj) -
Возвращает объект «представление памяти», созданный из заданного аргумента. Дополнительную информацию см. в разделе Представления памяти.
-
min(iterable, *[, key, default]) -
min(arg1, arg2, *args[, key]) -
Возвращает наименьший элемент в итерируемом объекте или наименьший из двух или более аргументов.
Если задан один позиционный аргумент, он должен быть итерируемым объектом. Возвращается наименьший элемент в итерируемом объекте. Если задано два или более позиционных аргументов, возвращается наименьший из позиционных аргументов.
Есть два необязательных ключевых аргумента. Аргумент key задаёт функцию упорядочивания с одним аргументом, подобно той, что используется для
list.sort(). Аргумент default задаёт объект, который должен быть возвращён, если предоставленный итерируемый объект пустой. Если итерируемый объект пустой и default не указан, генерируется исключениеValueError.Если несколько элементов минимальны, функция возвращает первый из встреченных. Это согласуется с другими инструментами, сохраняющими устойчивость сортировки, такими как
sorted(iterable, key=keyfunc)[0]иheapq.nsmallest(1, iterable, key=keyfunc).Введено в версии 3.4: Ключевой аргумент default.
-
next(iterator[, default]) -
Получает следующий элемент из iterator, вызывая его метод
__next__(). Если задан default, он возвращается, если итератор исчерпан; в противном случае генерируется исключениеStopIteration.
-
class object -
Возвращает новый безфункциональный объект.
objectявляется базой для всех классов. Он имеет методы, которые являются общими для всех экземпляров классов Python. Эта функция не принимает никаких аргументов.
-
oct(x) -
Преобразует целое число в строку в восьмеричной системе счисления с префиксом «0o». Результат является допустимым выражением Python. Если x не является объектом Python
int, он должен определять метод__index__(), возвращающий целое число. Например:>>> oct(8) '0o10' >>> oct(-56) '-0o70'
Если требуется преобразовать целое число в восьмеричную строку с префиксом «0o» или без него, можно использовать любой из следующих способов.
>>> '%#o' % 10, '%o' % 10 ('0o12', '12') >>> format(10, '#o'), format(10, 'o') ('0o12', '12') >>> f'{10:#o}', f'{10:o}' ('0o12', '12')См. также
format()для получения дополнительной информации.
-
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) -
Открыть файл и вернуть соответствующий объект файла. Если файл нельзя открыть, возникает
OSError.file — это объект-путь, задающий имя файла (абсолютное или относительное к текущей рабочей директории) файла, который нужно открыть, или целочисленный дескриптор файла, который нужно обернуть. (Если задан дескриптор файла, он будет закрыт при закрытии возвращенного объекта ввода-вывода, если closefd не установлено в
False.)mode — это необязательная строка, которая задаёт режим открытия файла. По умолчанию это
'r', что означает открытие для чтения в текстовом режиме. Другие распространённые значения —'w'для записи (обрезая файл, если он уже существует),'x'для исключительного создания (сбой, если файл уже существует) и'a'для добавления (что на некоторых системах Unix означает, что все записи добавляются в конец файла независимо от текущей позиции поиска). В текстовом режиме, если encoding не указано, используемая кодировка зависит от платформы: вызываетсяlocale.getpreferredencoding(False), чтобы получить текущую кодировку локали. (Для чтения и записи необработанных байтов используйте двоичный режим и оставьте encoding неуказанным.) Доступные режимы:Символ
Значение
'r'открытие для чтения (по умолчанию)
'w'открытие для записи, предварительно обрезая файл
'x'открытие для исключительного создания, с ошибкой, если файл уже существует
'a'открытие для записи, добавляя в конец файла, если он существует
'b'двоичный режим
't'текстовый режим (по умолчанию)
'+'открытие файла для обновления (чтения и записи)
'U'режим универсальных новых строк (устарел)
Режим по умолчанию —
'r'(открытие для чтения текста, синоним'rt'). Для двоичного доступа для чтения и записи режим'w+b'открывает и обрезает файл до 0 байт.'r+b'открывает файл без обрезки.Как упоминалось в Обзоре, Python различает двоичный и текстовый ввод-вывод. Файлы, открытые в двоичном режиме (включая
'b'в аргументе mode), возвращают содержимое какbytesобъекты без какого-либо декодирования. В текстовом режиме (по умолчанию или когда't'включено в аргумент mode), содержимое файла возвращается какstr, при этом байты были предварительно декодированы с помощью платформенно-зависимой кодировки или указанной encoding, если она задана.Примечание
Python не зависит от представления текстовых файлов операционной системой; вся обработка выполняется самим Python и поэтому независима от платформы.
buffering — это необязательное целое число, используемое для задания политики буферизации. Передайте 0, чтобы отключить буферизацию (разрешено только в двоичном режиме), 1, чтобы выбрать строчную буферизацию (используется только в текстовом режиме), и целое число > 1, чтобы указать размер в байтах буфера фиксированного размера. Если аргумент buffering не задан, политика буферизации по умолчанию работает следующим образом:
- Двоичные файлы буферизуются в фрагментах фиксированного размера; размер буфера выбирается с помощью эвристики, пытающейся определить «размер блока» базового устройства и обращаясь к
io.DEFAULT_BUFFER_SIZE. Во многих системах буфер, как правило, будет иметь длину 4096 или 8192 байта. - «Интерактивные» текстовые файлы (файлы, для которых
isatty()возвращаетTrue) используют строчную буферизацию. Другие текстовые файлы используют политику, описанную выше для двоичных файлов.
encoding — это имя кодировки, используемой для декодирования или кодирования файла. Это должно использоваться только в текстовом режиме. Кодировка по умолчанию зависит от платформы (то, что возвращает
locale.getpreferredencoding()), но может использоваться любая поддерживаемая Python кодировка текста. См. модульcodecsдля списка поддерживаемых кодировок.errors — это необязательная строка, которая определяет, как обрабатываются ошибки кодирования и декодирования — это нельзя использовать в двоичном режиме. Доступно множество стандартных обработчиков ошибок (перечислены в разделе Обработчики ошибок), хотя любое имя обработки ошибок, зарегистрированное в
codecs.register_error(), также является допустимым. Стандартные имена включают:-
'strict'для повышенияValueErrorисключения, если произошла ошибка кодирования. Значение по умолчаниюNoneимеет тот же эффект. -
'ignore'игнорирует ошибки. Обратите внимание, что игнорирование ошибок кодирования может привести к потере данных. -
'replace'приводит к вставке маркера замены (например,'?') там, где имеются неправильные данные. -
'surrogateescape'представляет любые неправильные байты в виде кодовых точек в области частного использования Unicode, начиная с 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.Изменено в версии 3.3:- Добавлен параметр opener.
- Добавлен режим
'x'. - Исключение
IOErrorбыло заменено на алиасOSError. - Исключение
FileExistsErrorтеперь возникает, если файл, открытый в режиме эксклюзивного создания ('x'), уже существует.
Изменено в версии 3.4:- Файл теперь не наследуется.
Устарело начиная с версии 3.4, будет удалено в версии 4.0: Режим
'U'.Изменено в версии 3.5:- Если системный вызов прерывается, а обработчик сигнала не вызывает исключение, функция теперь повторно пытается выполнить системный вызов вместо того, чтобы вызывать исключение
InterruptedError(см. PEP 475 для обоснования). - Добавлен обработчик ошибок
'namereplace'.
Изменено в версии 3.6:- Добавлена поддержка объектов, реализующих
os.PathLike. - В Windows при открытии буфера консоли может возвращаться подкласс
io.RawIOBaseкромеio.FileIO.
-
ord(c) -
Принимая строку, представляющую один символ Юникода, возвращает целое число, представляющее код Юникода этого символа. Например,
ord('a')возвращает целое число97, аord('€')(символ евро) возвращает8364. Это обратная функцияchr().
-
pow(x, y[, z]) -
Возвращает x в степени y; если z присутствует, возвращает x в степени y по модулю z (вычисление выполняется более эффективно, чем
pow(x, y) % z). Двухаргументная формаpow(x, y)эквивалентна использованию оператора возведения в степень:x**y.Аргументы должны иметь числовые типы. При смешанных типах операндов применяются правила приведения для бинарных арифметических операторов. Для операндов типа
int, результат имеет тот же тип, что и операнды (после приведения), если второй аргумент не отрицательный; в противном случае все аргументы преобразуются в float, и результат будет float. Например,10**2возвращает100, но10**-2возвращает0.01. Если второй аргумент отрицательный, третий аргумент должен быть опущен. Если z присутствует, x и y должны быть целых типов, а y — неотрицательным.
-
print(*objects, sep=' ', end='\n', file=sys.stdout, 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вызовет getter,c.x = valueвызовет setter иdel c.xвызовет deleter.Если указано, 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, которые могут использоваться как декораторы, создающие копию свойства с соответствующей функцией доступа, установленной на декорированную функцию. Это лучше всего объясняется на примере: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: Строки документации объектов свойств теперь могут быть изменены.
-
range(stop) -
range(start, stop[, step]) -
Вместо функции,
rangeна самом деле является неизменяемым типом последовательности, как описано в Диапазонах и Типы последовательностей — список, кортеж, диапазон.
-
repr(object) -
Возвращает строку, содержащую удобочитаемое представление объекта. Для многих типов эта функция пытается вернуть строку, которая приведет к объекту с тем же значением, когда она передается в
eval(), в противном случае представление — это строка в угловых скобках, содержащая имя типа объекта вместе с дополнительной информацией, часто включающей имя и адрес объекта. Класс может контролировать, что эта функция возвращает для своих экземпляров, определив метод__repr__().
-
reversed(seq) -
Возвращает обратный итератор. seq должен быть объектом, имеющим метод
__reversed__()или поддерживающим протокол последовательностей (метод__len__()и метод__getitem__()с целочисленными аргументами, начиная с0).
-
round(number[, ndigits]) -
Возвращает число, округлённое до 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([iterable]) -
Возвращает новый объект
set, необязательно с элементами, взятыми из iterable.set— встроенный класс. См.setи Типы множеств — set, frozenset для документации по этому классу.Для других контейнеров см. встроенные классы
frozenset,list,tupleиdict, а также модульcollections.
-
setattr(object, name, value) -
Это аналог
getattr(). Аргументы — объект, строка и произвольное значение. Строка может называть существующее свойство или новое. Функция присваивает значение свойству, если это позволяет объект. Например,setattr(x, 'foobar', 123)эквивалентноx.foobar = 123.
-
class slice(stop) -
class slice(start, stop[, step]) -
Возвращает объект среза, представляющий множество индексов, указанных в
range(start, stop, step). Аргументы start и step по умолчанию равныNone. Объекты срезов имеют только для чтения атрибуты данныхstart,stopиstep, которые просто возвращают значения аргументов (или их значения по умолчанию). Они не имеют другой явной функциональности; однако они используются Numerical Python и другими сторонними расширениями. Объекты срезов также генерируются при использовании расширенного синтаксиса индексирования. Например:a[start:stop:step]илиa[start:stop, i]. См.itertools.islice()для альтернативной версии, возвращающей итератор.
-
sorted(iterable, *, key=None, reverse=False) -
Возвращает новый отсортированный список из элементов в iterable.
Имеет два необязательных аргумента, которые должны быть указаны как именованные аргументы.
key задаёт функцию одного аргумента, используемую для извлечения ключа сравнения из каждого элемента в iterable (например,
key=str.lower). Значение по умолчанию —None(элементы сравниваются напрямую).reverse — логическое значение. Если установлено в
True, элементы списка сортируются как если бы каждое сравнение было обращено.Используйте
functools.cmp_to_key()для преобразования функции старого стиля cmp в функцию key.Встроенная функция
sorted()гарантированно является стабильной. Сортировка стабильна, если она гарантирует, что не будет изменён порядок элементов, которые сравниваются как равные — это полезно для сортировки в несколько проходов (например, сортировка по отделу, затем по должности).Примеры сортировки и краткий учебник по сортировке см. в Сортировка HOW TO.
-
@staticmethod -
Преобразует метод в статический метод.
Статический метод не получает неявного первого аргумента. Для объявления статического метода используйте этот шаблон:
class C: @staticmethod def f(arg1, arg2, ...): ...Форма
@staticmethod— это декоратор — см. описание определения функций в Определения функций для получения подробностей.Его можно вызвать либо на классе (например,
C.f()), либо на экземпляре (например,C().f()). Экземпляр игнорируется, за исключением его класса.Статические методы в Python аналогичны тем, которые можно найти в Java или C++. Также см.
classmethod()для варианта, полезного для создания альтернативных конструкторов класса.Как и все декораторы, также можно вызвать
staticmethodкак обычную функцию и выполнить что-то с её результатом. Это необходимо в некоторых случаях, когда вам нужна ссылка на функцию из тела класса, и вы хотите избежать автоматического преобразования в метод экземпляра. В этих случаях используйте этот шаблон:class C: builtin_open = staticmethod(open)Дополнительную информацию о статических методах см. в документации по стандартной иерархии типов в Стандартная иерархия типов.
-
class str(object='') -
class str(object=b'', encoding='utf-8', errors='strict') -
Возвращает
strверсию object. См.str()для получения подробностей.str— встроенный строковый класс. Для общей информации о строках см. Тип последовательности текста — str.
-
sum(iterable[, start]) -
Складывает start и элементы iterable слева направо и возвращает сумму. start по умолчанию равно
0. Элементы iterable обычно являются числами, а значение start не может быть строкой.Для некоторых случаев использования существуют хорошие альтернативы
sum(). Предпочтительный и быстрый способ конкатенации последовательности строк — вызов''.join(sequence). Для добавления чисел с плавающей запятой с расширенной точностью см.math.fsum(). Для конкатенации последовательности итераторов рассмотрите использованиеitertools.chain().
-
super([type[, object-or-type]]) -
Возвращает прокси-объект, который делегирует вызовы методов родительскому или братскому классу типа. Это полезно для доступа к унаследованным методам, которые были переопределены в классе. Порядок поиска такой же, как и у
getattr(), за исключением того, что сам тип пропускается.Атрибут
__mro__типа указывает порядок поиска разрешения методов, используемый какgetattr(), так иsuper(). Атрибут динамичен и может изменяться всякий раз, когда обновляется иерархия наследования.Если второй аргумент опущен, возвращаемый супер-объект не привязан. Если второй аргумент — объект,
isinstance(obj, type)должно быть истинным. Если второй аргумент — тип,issubclass(type2, type)должно быть истинным (это полезно для методов класса).Существует два типичных случая использования 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().__getitem__(name). Он делает это, реализуя свой собственный метод__getattribute__()для поиска классов в предсказуемом порядке, который поддерживает кооперативное множественное наследование. Соответственно,super()не определено для неявных поисков, используемых с помощью операторов или операторов, таких какsuper()[name].Также обратите внимание, что помимо формы с нулевым аргументом,
super()не ограничен использованием внутри методов. Форма с двумя аргументами точно указывает аргументы и создает соответствующие ссылки. Форма с нулевым аргументом работает только внутри определения класса, так как компилятор заполняет необходимые детали для правильного получения определенного класса, а также доступа к текущему экземпляру для обычных методов.Для практических рекомендаций по проектированию кооперативных классов с использованием
super(), см. руководство по использованию super().
-
tuple([iterable]) -
Вместо того, чтобы быть функцией,
tupleна самом деле является неизменяемым типом последовательности, как описано в Кортежи и Типы последовательностей — список, кортеж, диапазон.
-
class type(object) -
class type(name, bases, dict) -
С одним аргументом возвращает тип объекта. Возвращаемое значение — объект типа, и, как правило, такой же объект, как и возвращаемый
object.__class__.Встроенная функция
isinstance()рекомендуется для проверки типа объекта, потому что она учитывает подклассы.С тремя аргументами возвращает новый объект типа. Это по сути динамичная форма оператора
class. Строка name — это имя класса и становится атрибутом__name__; кортеж bases перечисляет базовые классы и становится атрибутом__bases__; и словарь dict — это пространство имен, содержащее определения тела класса, и копируется в стандартный словарь, чтобы стать атрибутом__dict__. Например, следующие два оператора создают идентичные объектыtype:>>> class X: ... a = 1 ... >>> X = type('X', (object,), dict(a=1))См. также Объекты типа.
Изменено в версии 3.6: Подклассы
type, которые не переопределяютtype.__new__больше не могут использовать форму с одним аргументом для получения типа объекта.
-
vars([object]) -
Возвращает атрибут
__dict__для модуля, класса, экземпляра или любого другого объекта с атрибутом__dict__.Объекты, такие как модули и экземпляры, имеют изменяемый атрибут
__dict__; однако, другие объекты могут иметь ограничения на запись для своих атрибутов__dict__(например, классы используютtypes.MappingProxyType, чтобы предотвратить прямые обновления словаря).Без аргумента,
vars()действует какlocals(). Обратите внимание, что словарь локальных переменных полезен только для чтения, так как обновления словаря локальных переменных игнорируются.
-
zip(*iterables) -
Создает итератор, который агрегирует элементы из каждой из итерируемых последовательностей.
Возвращает итератор кортежей, где i-й кортеж содержит i-й элемент из каждой из последовательностей или итерируемых объектов-аргументов. Итератор останавливается, когда исчерпывается самая короткая входная итерируемая последовательность. С одним аргументом-итерируемой последовательностью возвращает итератор из 1-кортежей. Без аргументов возвращает пустой итератор. Эквивалентно:
def zip(*iterables): # zip('ABCD', 'xy') --> Ax By sentinel = object() iterators = [iter(it) for it in iterables] while iterators: result = [] for it in iterators: elem = next(it, sentinel) if elem is sentinel: return result.append(elem) yield tuple(result)Гарантируется порядок оценки итерируемых объектов слева направо. Это позволяет использовать идиому для группирования последовательности данных в группы длины n с помощью
zip(*[iter(s)]*n). Это повторяет один и тот же итераторnраз, чтобы каждый выходной кортеж содержал результат вызовов итератораn. Это имеет эффект разделения ввода на куски длины n.zip()следует использовать только с входными данными разной длины, когда вас не волнуют хвостовые несопоставленные значения из более длинных итерируемых последовательностей. Если эти значения важны, используйтеitertools.zip_longest()вместо этого.zip()в сочетании с оператором*можно использовать для разгруппировки списка:>>> x = [1, 2, 3] >>> y = [4, 5, 6] >>> zipped = zip(x, y) >>> list(zipped) [(1, 4), (2, 5), (3, 6)] >>> x2, y2 = zip(*zip(x, y)) >>> x == list(x2) and y == list(y2) True
-
__import__(name, globals=None, locals=None, fromlist=(), level=0) -
Примечание
Это расширенная функция, которая не требуется в повседневной программировании на Python, в отличие от
importlib.import_module().Эта функция вызывается оператором
import. Её можно заменить (импортировав модульbuiltinsи присвоив значениеbuiltins.__import__) для изменения семантики оператораimport, но это настоятельно не рекомендуется, так как обычно проще использовать импортные хуки (см. PEP 302), чтобы достичь тех же целей и не вызывать проблем с кодом, предполагающим использование стандартной реализации импорта. Прямое использование__import__()также не рекомендуется в пользуimportlib.import_module().Функция импортирует модуль name, потенциально используя заданные globals и locals для определения того, как интерпретировать имя в контексте пакета. fromlist содержит имена объектов или подмодулей, которые должны быть импортированы из модуля, указанного name. Стандартная реализация вообще не использует свой аргумент locals и использует globals только для определения контекста пакета оператора
import.level указывает, использовать абсолютный или относительный импорт. Значение 0 (по умолчанию) означает только выполнение абсолютных импортов. Положительные значения level указывают количество родительских каталогов для поиска относительно каталога модуля, вызывающего
__import__()(подробности см. в PEP 328).Когда переменная name имеет вид
package.module, обычно возвращается верхнеуровневый пакет (имя до первой точки), а не модуль, названный name. Однако, когда указан аргумент fromlist с непустым значением, возвращается модуль, названный name.Например, оператор
import spamприводит к байт-коду, подобному следующему коду:spam = __import__('spam', globals(), locals(), [], 0)Оператор
import spam.hamприводит к этому вызову:spam = __import__('spam.ham', globals(), locals(), [], 0)Обратите внимание, как
__import__()возвращает верхнеуровневый модуль, потому что это объект, связанный с именем операторомimport.С другой стороны, оператор
from spam.ham import eggs, sausage as sausприводит к_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], 0) eggs = _temp.eggs saus = _temp.sausageЗдесь модуль
spam.hamвозвращается функцией__import__(). Из этого объекта извлекаются имена для импорта и присваиваются соответствующим именам.Если вам просто нужно импортировать модуль (возможно, внутри пакета) по имени, используйте
importlib.import_module().Изменено в версии 3.3: Отрицательные значения для level больше не поддерживаются (что также меняет значение по умолчанию на 0).
Примечания
-
1 -
Обратите внимание, что парсер принимает только соглашение о конце строки в стиле Unix. Если вы читаете код из файла, убедитесь, что используете режим преобразования строк, чтобы преобразовать строки в стиле Windows или Mac.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/3.6/library/functions.html