2. Встроенные функции
Интерпретатор Python содержит ряд встроенных функций и типов, которые всегда доступны. Они перечислены здесь в алфавитном порядке.
Встроенные функции |
||||
|---|---|---|---|---|
-
abs(x)¶ Возвращает абсолютное значение числа. Аргументом может быть целое число или число с плавающей точкой. Если аргумент – комплексное число, возвращается его модуль.
-
all(итерируемый объект)¶ Возвращает
True, если все элементы итерируемого объекта истинны (или если итерируемый объект пуст). Эквивалентно:pythondef all(iterable): for element in iterable: if not element: return False return True
-
any(итерируемый объект)¶ Возвращает
True, если хотя бы один элемент итерируемого объекта истинен. Если итерируемый объект пуст, возвращаетFalse. Эквивалентно:pythondef any(iterable): for element in iterable: if element: return True return False
-
ascii(объект)¶ Как и
repr(), возвращает строку, содержащую печатное представление объекта, но экранирует не-ASCII символы в строке, возвращаемойrepr(), с помощью управляющих последовательностей\x,\uили\U. Это создаёт строку, похожую на возвращаемуюrepr()в Python 2.
-
bin(x)¶ Преобразует целое число в двоичную строку с префиксом «0b». Результат является допустимым выражением Python. Если x не является объектом
intPython, он должен определять метод__index__(), возвращающий целое число. Несколько примеров:text>>> bin(3) '0b11' >>> bin(-10) '-0b1010'Если требуется префикс “0b” или нет, можно использовать один из следующих способов.
text>>> 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. Он имеет большинство обычных методов изменяемых последовательностей, описанных в Mutable Sequence Types, а также большинство методов типаbytes, см. Bytes and Bytearray Operations.Необязательный параметр source можно использовать для инициализации массива несколькими разными способами:
Если задана строка, необходимо также указать параметры encoding (и, необязательно, errors);
bytearray()затем преобразует строку в байты с помощьюstr.encode().Если это целое число, массив будет иметь этот размер и будет инициализирован нулевыми байтами.
Если это объект, соответствующий интерфейсу buffer, для инициализации массива bytes будет использоваться буфер объекта только для чтения.
Если это итерируемый объект, он должен быть итерируемым объектом целых чисел в диапазоне
0 <= x < 256, которые используются в качестве начального содержимого массива.
Без аргумента создаётся массив размера 0.
См. также Binary Sequence Types – bytes, bytearray, memoryview и Bytearray Objects.
-
class
bytes([source[, encoding[, errors]]]) Возвращает новый объект “bytes”, который является неизменяемой последовательностью целых чисел в диапазоне
0 <= x < 256.bytesявляется неизменяемой версиейbytearray– он имеет те же неизменяющие методы и то же поведение при индексации и срезе.Соответственно, аргументы конструктора интерпретируются так же, как для
bytearray().Объекты bytes также можно создавать с помощью литералов, см. String and Bytes literals.
См. также Binary Sequence Types – bytes, bytearray, memoryview, Bytes Objects и Bytes and Bytearray Operations.
-
callable(объект)¶ Возвращает
True, если аргумент объект является вызываемым,False– в противном случае. Если эта функция возвращает истину, все еще возможно, что вызов завершится неудачей, но если она возвращает ложь, вызов объекта никогда не будет успешным. Обратите внимание, что классы являются вызываемыми (вызов класса возвращает новый экземпляр); экземпляры являются вызываемыми, если их класс имеет метод__call__().Новое в версии 3.2: Эта функция была сначала удалена в Python 3.0, а затем возвращена в Python 3.2.
-
chr(i)¶ Возвращает строку, представляющую символ, кодовая точка Unicode которого является целым числом i. Например,
chr(97)возвращает строку'a', аchr(8364)возвращает строку'€'. Это обратная операция кord().Допустимый диапазон аргумента – от 0 до 1 114 111 (0x10FFFF в шестнадцатеричной системе). Исключение
ValueErrorбудет возбуждено, если i выходит за этот диапазон.
-
@classmethod¶ Преобразует метод в метод класса.
Метод класса получает класс в качестве неявного первого аргумента, так же как метод экземпляра получает экземпляр. Чтобы объявить метод класса, используйте следующую идиому:
pythonclass C: @classmethod def f(cls, arg1, arg2, ...): ...Форма
@classmethod– это функция декоратор – см. описание определений функций в Определения функций для подробностей.Его можно вызывать либо для класса (например,
C.f()), либо для экземпляра (например,C().f()). Экземпляр игнорируется, учитывается только его класс. Если метод класса вызывается для производного класса, объект производного класса передается в качестве неявного первого аргумента.Методы классов отличаются от статических методов C++ или Java. Если нужны такие методы, см.
staticmethod()в этом разделе.Для получения дополнительной информации о методах классов обратитесь к документации по стандартной иерархии типов в Стандартная иерархия типов.
-
compile(исходный код, имя файла, режим, флаги=0, dont_inherit=False, оптимизация=-1)¶ Компилирует source в объект кода или AST. Объекты кода могут выполняться с помощью
exec()илиeval(). source может быть обычной строкой, строкой байтов или объектом AST. См. документацию модуляastдля получения информации о работе с объектами AST.Аргумент filename должен указывать файл, из которого был прочитан код; передайте узнаваемое значение, если код не был прочитан из файла (обычно используется
'<string>').Аргумент mode определяет, какой тип кода должен быть скомпилирован; это может быть
'exec', если source состоит из последовательности операторов,'eval', если он состоит из одного выражения, или'single', если он состоит из одного интерактивного оператора (в последнем случае будут напечатаны выражения-инструкции, которые вычисляются в значение, отличное отNone).Необязательные аргументы flags и dont_inherit управляют тем, какие future-операторы влияют на компиляцию source. \nЕсли ни один из них не указан (или оба равны нулю), код компилируется с теми future-операторами, которые действуют в коде, вызывающем
compile(). \nЕсли аргумент flags задан, а dont_inherit не задан (или равен нулю), то future-операторы, указанные аргументом flags, используются дополнительно к тем, которые использовались бы в любом случае. \nЕсли dont_inherit – ненулевое целое, то аргумент flags является единственным – future-операторы, действующие вокруг вызова compile, игнорируются.Future-операторы задаются битами, которые можно объединять побитовым ИЛИ для указания нескольких операторов. \nБитовое поле, необходимое для указания конкретной возможности, можно найти как атрибут
compiler_flagна экземпляре_Featureв модуле__future__.Аргумент optimize задаёт уровень оптимизации компилятора; значение по умолчанию
-1выбирает уровень оптимизации интерпретатора, заданный опциями-O. Явные уровни:0(без оптимизации;__debug__истинно),1(asserts удалены,__debug__ложно) или2(докстроки также удалены).Эта функция возбуждает исключение
SyntaxError, если скомпилированный исходный код недопустим, иValueError, если исходный код содержит нулевые байты.Если вы хотите разобрать код Python в его AST-представление, см.
ast.parse().Примечание
При компиляции строки с многострочным кодом в режиме
'single'или'eval'ввод должен заканчиваться хотя бы одним символом новой строки. Это сделано для облегчения обнаружения неполных и полных операторов в модулеcode.Предупреждение
Возможно аварийное завершение интерпретатора Python при компиляции достаточно большой/сложной строки в объект AST из-за ограничений глубины стека в компиляторе AST Python.
Изменено в версии 3.2: Разрешено использование символов новой строки Windows и Mac. Также ввод в режиме
'exec'больше не должен заканчиваться символом новой строки. Добавлен параметр optimize.Изменено в версии 3.5: Ранее
TypeErrorвызывалось при обнаружении нулевых байтов в source.
-
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(объект, имя)¶ Это родственная функция для
setattr(). Аргументами являются объект и строка. Строка должна быть именем одного из атрибутов объекта. Функция удаляет указанный атрибут, если объект это позволяет. Например,delattr(x, 'foobar')эквивалентноdel x.foobar.
-
class
dict(**kwarg) -
class
dict(отображение, **kwarg) -
class
dict(итерируемый объект, **kwarg) Создаёт новый словарь. Объект
dict– это класс словаря. За документацией об этом классе обратитесь кdictи Сопоставляющие типы – dict.Для других контейнеров см. встроенные классы
list,setиtuple, а также модульcollections.
-
dir([объект])¶ Без аргументов возвращает список имён в текущей локальной области видимости. С аргументом пытается вернуть список допустимых атрибутов этого объекта.
Если объект имеет метод с именем
__dir__(), этот метод будет вызван и должен вернуть список атрибутов. Это позволяет объектам, реализующим пользовательскую функцию__getattr__()или__getattribute__(), настраивать способ, которымdir()отображает их атрибуты.Если объект не предоставляет
__dir__(), функция старается извлечь информацию из атрибута__dict__объекта (если он определён) и из его объекта-типа. Результирующий список не обязательно полный и может быть неточным, если объект имеет собственный__getattr__().Механизм
dir()по умолчанию ведёт себя по-разному для разных типов объектов, поскольку он пытается предоставить наиболее релевантную, а не полную информацию:Если объект является модулем, список содержит имена атрибутов модуля.
Если объект является типом или классом, список содержит имена его атрибутов и, рекурсивно, атрибутов его базовых классов.
В противном случае список содержит имена атрибутов объекта, имена атрибутов его класса и, рекурсивно, атрибутов базовых классов его класса.
Результирующий список отсортирован по алфавиту. Например:
text>>> import struct >>> dir() # показать имена в пространстве имён модуля ['__builtins__', '__name__', 'struct'] >>> dir(struct) # показать имена в модуле struct ['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(итерируемый объект, start=0)¶ Возвращает объект enumerate. iterable должен быть последовательностью, итератором или другим объектом, поддерживающим итерацию. Метод
__next__()итератора, возвращаемогоenumerate(), возвращает кортеж, содержащий счётчик (начиная с start, который по умолчанию равен 0) и значения, полученные при итерации по iterable.text>>> 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')]Эквивалентно:
pythondef enumerate(sequence, start=0): n = start for elem in sequence: yield n, elem n += 1
-
eval(выражение, globals=None, locals=None)¶ Аргументы – это строка и необязательные параметры globals и locals. Если они указаны, globals должен быть словарём. Если указан, locals может быть любым отображающим объектом.
Аргумент expression разбирается и вычисляется как выражение Python (технически – список условий) с использованием словарей globals и locals в качестве глобального и локального пространства имён. Если словарь globals присутствует и не содержит значения для ключа
__builtins__, то перед разбором expression под этот ключ вставляется ссылка на словарь встроенного модуляbuiltins. Это означает, что expression обычно имеет полный доступ к стандартному модулюbuiltins, а ограниченные окружения распространяются. Если словарь locals опущен, он по умолчанию равен словарю globals. Если оба словаря опущены, выражение выполняется в окружении, где вызванаeval(). Возвращаемое значение – результат вычисленного выражения. Синтаксические ошибки сообщаются как исключения. Пример:text>>> x = 1 >>> eval('x+1') 2Эту функцию также можно использовать для выполнения произвольных объектов кода (например, созданных с помощью
compile()). В этом случае передайте объект кода вместо строки. Если объект кода был скомпилирован с'exec'в качестве аргумента mode, возвращаемое значениеeval()будет равноNone.Подсказки: динамическое выполнение инструкций поддерживается функцией
exec(). Функцииglobals()иlocals()возвращают текущий глобальный и локальный словари соответственно, что может быть полезно для передачи вeval()илиexec().См.
ast.literal_eval()для функции, которая может безопасно вычислять строки с выражениями, содержащими только литералы.
-
exec(объект[, globals[, locals]])¶ Эта функция поддерживает динамическое выполнение кода Python. object должен быть строкой или объектом кода. Если это строка, она разбирается как набор инструкций Python, который затем выполняется (если не возникает синтаксическая ошибка). 1 Если это объект кода, он просто выполняется. В любом случае ожидается, что выполняемый код будет допустимым как файловый ввод (см. раздел «File input» в справочном руководстве). Имейте в виду, что операторы
returnиyieldне могут использоваться вне определений функций, даже в контексте кода, переданного функцииexec(). Возвращаемое значение –None.Во всех случаях, если необязательные части опущены, код выполняется в текущей области видимости. Если указан только globals, он должен быть словарём, который будет использоваться как для глобальных, так и для локальных переменных. Если заданы globals и locals, они используются для глобальных и локальных переменных соответственно. Если указан, locals может быть любым отображающим объектом. Помните, что на уровне модуля globals и locals – один и тот же словарь. Если exec получает два отдельных объекта в качестве globals и locals, код будет выполняться так, как если бы он был встроен в определение класса.
Если словарь globals не содержит значения для ключа
__builtins__, под этот ключ вставляется ссылка на словарь встроенного модуляbuiltins. Таким образом, можно контролировать, какие встроенные функции доступны выполняемому коду, вставляя собственный словарь__builtins__в globals перед передачей его вexec().
-
filter(функция, итерируемый объект)¶ Строит итератор из тех элементов итерируемого объекта, для которых функция возвращает истину. итерируемый объект может быть последовательностью, контейнером, поддерживающим итерацию, или итератором. Если функция равна
None, предполагается тождественная функция, то есть удаляются все элементы итерируемого объекта, которые являются ложными.Обратите внимание, что
filter(function, iterable)эквивалентно генераторному выражению(item for item in iterable if function(item)), если function не равноNone, и(item for item in iterable if item), если function равноNone.Смотрите
itertools.filterfalse()для дополнительной функции, которая возвращает элементы итерируемого объекта, для которых функция возвращает ложь.
-
class
float([x])¶ Возвращает число с плавающей запятой, построенное из числа или строки x.
Если аргумент является строкой, она должна содержать десятичное число, возможно, с предшествующим знаком и, возможно, окружённое пробелами. Необязательный знак может быть
'+'или'-'; знак'+'не влияет на получаемое значение. Аргументом также может быть строка, представляющая NaN (не число), или положительную или отрицательную бесконечность. Более точно, входные данные должны соответствовать следующей грамматике после удаления начальных и конечных пробельных символов:sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" numeric_value ::=
floatnumber|infinity|nannumeric_string ::= [sign]numeric_valuefloatnumber– это форма литерала числа с плавающей запятой в Python, описанная в Литералы чисел с плавающей запятой. Регистр не имеет значения, так что, например, «inf», «Inf», «INFINITY» и «iNfINity» – все являются допустимыми написаниями положительной бесконечности.В противном случае, если аргумент является целым числом или числом с плавающей запятой, возвращается число с плавающей запятой с тем же значением (в пределах точности чисел с плавающей запятой Python). Если аргумент выходит за пределы диапазона чисел с плавающей запятой Python, будет возбуждено
OverflowError.Для произвольного объекта Python
xфункцияfloat(x)делегирует вызовx.__float__().Если аргумент не указан, возвращается
0.0.Примеры:
python>>> 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(значение[, format_spec])¶ Преобразует значение в «форматированное» представление, управляемое format_spec. Интерпретация format_spec зависит от типа аргумента значение, однако существует стандартный синтаксис форматирования, используемый большинством встроенных типов: Мини-язык спецификации формата.
Значение 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 Types – set, frozenset для документации по этому классу.Другие контейнеры см. во встроенных классах
set,list,tupleиdict, а также в модулеcollections.
-
getattr(объект, имя[, default])¶ Возвращает значение именованного атрибута объекта. name должен быть строкой. Если строка является именем одного из атрибутов объекта, результатом будет значение этого атрибута. Например,
getattr(x, 'foobar')эквивалентноx.foobar. Если именованный атрибут не существует, возвращается default, если он указан, в противном случае возбуждаетсяAttributeError.
-
globals()¶ Возвращает словарь, представляющий текущую таблицу глобальных символов. Это всегда\nсловарь текущего модуля (внутри функции или метода – это модуль, в котором она определена, а не модуль, из которого она вызывается).
-
hasattr(объект, имя)¶ Аргументами являются объект и строка. Результат равен
True, если строка является именем одного из атрибутов объекта, иFalseв противном случае. (Это реализовано путём вызоваgetattr(object, name)и проверки, возбуждает ли он исключениеAttributeError.)
-
hash(объект)¶ Возвращает хеш-значение объекта (если оно есть). Хеш-значения являются целыми числами. Они используются для быстрого сравнения ключей словаря при поиске в словаре. Числовые значения, которые сравниваются как равные, имеют одинаковое хеш-значение (даже если они разных типов, как в случае 1 и 1.0).
Примечание
Для объектов с пользовательскими методами
__hash__(), обратите внимание, чтоhash()усекает возвращаемое значение на основе разрядности бит хост-машины. Подробнее см.__hash__().
-
help([объект])¶ Вызывает встроенную справочную систему. (Эта функция предназначена для интерактивного использования.) Если аргумент не указан, интерактивная справочная система запускается на консоли интерпретатора. Если аргумент является строкой, то эта строка ищется как имя модуля, функции, класса, метода, ключевого слова или темы документации, и на консоль выводится справочная страница. Если аргумент является объектом любого другого типа, генерируется справочная страница об этом объекте.
Эта функция добавляется во встроенное пространство имён модулем
site.
-
hex(x)¶ Преобразует целое число в строку шестнадцатеричного представления в нижнем регистре с префиксом “0x”. Если x не является объектом
intPython, он должен определять метод__index__(), возвращающий целое число. Несколько примеров:text>>> hex(255) '0xff' >>> hex(-42) '-0x2a'Если вы хотите преобразовать целое число в шестнадцатеричную строку в верхнем или нижнем регистре с префиксом или без, можно воспользоваться одним из следующих способов:
text>>> '%#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(объект)¶ Возвращает «идентификатор» объекта. Это целое число, которое гарантированно является уникальным и постоянным для данного объекта в течение его времени жизни. Два объекта с непересекающимся временем жизни могут иметь одинаковое значение
id().Особенность реализации CPython: Это адрес объекта в памяти.
-
input([приглашение])¶ Если аргумент prompt присутствует, он выводится в стандартный поток вывода без завершающего перевода строки. Затем функция читает строку из ввода, преобразует её в строку (удаляя завершающий перевод строки) и возвращает её. При достижении конца файла (EOF) возбуждается
EOFError. Пример:python>>> 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. При желании литерал может предшествовать+или-(без пробела между ними) и может быть окружён пробельными символами. Литерал с основанием n состоит из цифр от 0 до n-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 описан в Числовые типы – int, float, complex.
Изменено в версии 3.4: Если base не является экземпляром
intи объект base имеет методbase.__index__, этот метод вызывается для получения целого числа для основания. В предыдущих версиях вместоbase.__index__использовалосьbase.__int__.Изменено в версии 3.6: Разрешена группировка цифр с помощью подчёркиваний, как в литералах кода.
-
isinstance(объект, classinfo)¶ Возвращает истину, если аргумент object является экземпляром аргумента classinfo, или (прямого, косвенного или виртуального) подкласса. Если object не является объектом заданного типа, функция всегда возвращает ложь. Если classinfo является кортежем объектов типа (или рекурсивно других таких кортежей), возвращает истину, если object является экземпляром любого из типов. Если classinfo не является типом или кортежем типов и таких кортежей, возбуждается исключение
TypeError.
-
issubclass(класс, classinfo)¶ Возвращает истину, если class является подклассом (прямым, косвенным или виртуальным) classinfo. Класс считается подклассом самого себя. classinfo может быть кортежем объектов-классов, в этом случае проверяется каждая запись в classinfo. В любом другом случае возбуждается исключение
TypeError.
-
iter(объект[, sentinel])¶ Возвращает объект итератора. Первый аргумент интерпретируется совершенно по-разному в зависимости от наличия второго аргумента. Без второго аргумента object должен быть объектом-коллекцией, который поддерживает протокол итерации (метод
__iter__()) или должен поддерживать протокол последовательности (метод__getitem__()с целочисленными аргументами, начиная с0). Если он не поддерживает ни один из этих протоколов, возбуждаетсяTypeError. Если задан второй аргумент, sentinel, то object должен быть вызываемым объектом. Итератор, созданный в этом случае, будет вызывать object без аргументов при каждом вызове своего метода__next__(); если возвращённое значение равно sentinel, будет возбужденоStopIteration, в противном случае значение будет возвращено.См. также Типы итераторов.
Одно из полезных применений второй формы
iter()– чтение строк файла до тех пор, пока не будет достигнута определенная строка. Следующий пример читает файл до тех пор, пока методreadline()не вернет пустую строку:pythonwith 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 и выдаёт результаты. Если переданы дополнительные аргументы iterable, function должна принимать столько же аргументов и применяется к элементам всех итерируемых объектов параллельно. При нескольких итерируемых объектах итератор останавливается, когда самый короткий итерируемый объект исчерпан. Для случаев, когда входные данные функции уже организованы в кортежи аргументов, см.
itertools.starmap().
-
max(итерируемый объект, *[, ключ, значение по умолчанию])¶ -
max(arg1, arg2, *args[, ключ]) Возвращает наибольший элемент итерируемого объекта или наибольший из двух или более аргументов.
Если указан один позиционный аргумент, им должен быть итерируемый объект. Возвращается наибольший элемент итерируемого объекта. Если указано два или более позиционных аргументов, возвращается наибольший из них.
Есть два необязательных именованных аргумента. Аргумент 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(итерируемый объект, *[, ключ, значение по умолчанию])¶ -
min(arg1, arg2, *args[, ключ]) Возвращает наименьший элемент итерируемого объекта или наименьший из двух или более аргументов.
Если указан один позиционный аргумент, им должен быть итерируемый объект. Возвращается наименьший элемент итерируемого объекта. Если указано два или более позиционных аргументов, возвращается наименьший из них.
Есть два необязательных именованных аргумента. Аргумент key задает функцию упорядочивания с одним аргументом, подобную используемой для
list.sort(). Аргумент default указывает объект, который возвращается, если переданный итерируемый объект пуст. Если итерируемый объект пуст, а default не указан, возбуждаетсяValueError.Если несколько элементов являются минимальными, функция возвращает первый встреченный. Это согласуется с другими инструментами, сохраняющими устойчивость сортировки, такими как
sorted(iterable, key=keyfunc)[0]иheapq.nsmallest(1, iterable, key=keyfunc).Новое в версии 3.4: Аргумент default, передаваемый только по ключу.
-
next(итератор[, значение по умолчанию])¶ Извлекает следующий элемент из итератора, вызывая его метод
__next__(). Если указан default, он возвращается, если итератор исчерпан, в противном случае возбуждаетсяStopIteration.
-
class
object¶ Возвращает новый объект без каких-либо особенностей.
objectявляется базой для всех классов. Он имеет методы, общие для всех экземпляров классов Python. Эта функция не принимает никаких аргументов.
-
oct(x)¶ Преобразует целое число в строку восьмеричного представления с префиксом “0o”. Результат является корректным выражением Python. Если x не является объектом
intPython, он должен определять метод__index__(), возвращающий целое число. Например:text>>> oct(8) '0o10' >>> oct(-56) '-0o70'Чтобы преобразовать целое число в восьмеричную строку с префиксом «0o» или без него, можно использовать один из следующих способов.
text>>> '%#o' % 10, '%o' % 10 ('0o12', '12') >>> format(10, '#o'), format(10, 'o') ('0o12', '12') >>> f'{10:#o}', f'{10:o}' ('0o12', '12')См. также
format()для получения дополнительной информации.
-
open(файл, режим='r', буферизация=-1, кодировка=None, ошибки=None, новая строка=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'заменяет повреждённые данные escape-последовательностями Python с обратной косой чертой.'namereplace'(также поддерживается только при записи) заменяет неподдерживаемые символы escape-последовательностями\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()для открытия файла относительно заданного каталога:python>>> 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) # не допускать утечки файлового дескриптораТип файлового объекта, возвращаемого функцией
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'.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)¶ Принимает строку, представляющую один символ Unicode, и возвращает целое число, представляющее кодовую точку Unicode этого символа. Например,
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(*объекты, разделитель=' ', окончание='\n', файл=sys.stdout, сброс=False)¶ Печатает objects в текстовый поток file, разделяя их sep и завершая end. sep, end, file и flush, если присутствуют, должны передаваться как именованные аргументы.
Все неименованные аргументы преобразуются в строки, как
str(), и записываются в поток, разделённые sep и с end в конце. И sep, и end должны быть строками; они также могут бытьNone, что означает использование значений по умолчанию. Если объекты не заданы,print()просто запишет end.Аргумент файл должен быть объектом с методом
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:pythonclass 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()в качестве декоратора:pythonclass Parrot: def __init__(self): self._voltage = 100000 @property def voltage(self): """Получить текущее напряжение.""" return self._voltageДекоратор
@propertyпревращает методvoltage()в «геттер» для атрибута только для чтения с тем же именем и устанавливает строку документации для voltage в «Get the current voltage.»Объект свойства имеет методы
getter,setter, иdeleter, которые можно использовать как декораторы. Они создают копию свойства, устанавливая соответствующую функцию доступа в декорированную функцию. Это лучше всего объяснить на примере:pythonclass C: def __init__(self): self._x = None @property def x(self): """Я свойство 'x'.""" 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– это не функция, а неизменяемый тип последовательности, как описано в Ranges и Sequence Types – list, tuple, range.
-
repr(объект)¶ Возвращает строку, содержащую представимое для печати представление объекта. Для многих типов эта функция пытается вернуть строку, которая при передаче в
eval()даст объект с тем же значением; в противном случае представление – это строка, заключённая в угловые скобки, содержащая имя типа объекта вместе с дополнительной информацией, часто включающей имя и адрес объекта. Класс может управлять тем, что возвращает эта функция для своих экземпляров, определив метод__repr__().
-
reversed(seq)¶ Возвращает обратный итератор. seq должен быть объектом, который имеет метод
__reversed__()или поддерживает протокол последовательности (метод__len__()и метод__getitem__()с целочисленными аргументами, начиная с0).
-
round(число[, ndigits])¶ Возвращает number, округлённое до ndigits знаков после десятичной точки. Если ndigits опущен или равен
None, возвращает ближайшее целое число к входному.Для встроенных типов, поддерживающих
round(), значения округляются до ближайшего кратного 10 в степени минус ndigits; если два кратных одинаково близки, округление производится в сторону чётного (например, иround(0.5), иround(-0.5)округляются до0, аround(1.5)– до2). Для ndigits допустимо любое целое значение (положительное, нулевое или отрицательное). Возвращаемое значение – целое число, если ndigits опущен или равенNone. В противном случае возвращаемое значение имеет тот же тип, что и number.Для произвольного объекта Python
numberфункцияroundделегирует вызовnumber.__round__.Примечание
Поведение
round()для чисел с плавающей запятой может быть неожиданным: например,round(2.675, 2)даёт2.67вместо ожидаемого2.68. Это не ошибка: это результат того, что большинство десятичных дробей не могут быть представлены точно как float. См. Floating Point Arithmetic: Issues and Limitations для получения дополнительной информации.
-
class
set([iterable]) Возвращает новый объект
set, опционально с элементами, взятыми из iterable.set– встроенный класс. См.setи Set Types – set, frozenset для документации по этому классу.Другие контейнеры см. во встроенных классах
frozenset,list,tupleиdict, а также в модулеcollections.
-
setattr(объект, имя, значение)¶ Это аналог
getattr(). Аргументы: объект, строка и произвольное значение. Строка может указывать на существующий атрибут или новый атрибут. Функция присваивает значение атрибуту, если объект это допускает. Например,setattr(x, 'foobar', 123)эквивалентноx.foobar = 123.
-
class
slice(stop)¶ -
class
slice(start, stop[, step]) Возвращает объект slice, представляющий набор индексов, заданных
range(start, stop, step). Аргументы start и step по умолчанию равныNone. Объекты среза имеют атрибуты только для чтенияstart,stopиstep, которые просто возвращают значения аргументов (или их значения по умолчанию). У них нет другой явной функциональности; однако они используются Numerical Python и другими сторонними расширениями. Объекты среза также создаются при использовании расширенного синтаксиса индексации. Например:a[start:stop:step]илиa[start:stop, i]. См.itertools.islice()для альтернативной версии, возвращающей итератор.
-
sorted(итерируемый объект, *, ключ=None, обратный порядок=False)¶ Возвращает новый отсортированный список из элементов iterable.
Имеет два необязательных аргумента, которые должны быть указаны как именованные аргументы.
key задаёт функцию одного аргумента, которая используется для извлечения ключа сравнения из каждого элемента iterable (например,
key=str.lower). Значение по умолчанию –None(сравнивает элементы напрямую).reverse – логическое значение. Если установлено в
True, то элементы списка сортируются так, как если бы каждое сравнение было обращено.Используйте
functools.cmp_to_key()для преобразования функции cmp старого стиля в функцию key.Встроенная функция
sorted()гарантированно стабильна. Сортировка является стабильной, если она гарантирует, что не меняет относительный порядок элементов, которые сравниваются как равные – это полезно для сортировки в несколько проходов (например, сначала по отделу, затем по уровню зарплаты).Для примеров сортировки и краткого руководства по сортировке см. Sorting HOW TO.
-
@staticmethod¶ Преобразует метод в статический метод.
Статический метод не получает неявный первый аргумент. Чтобы объявить статический метод, используйте следующую идиому:
pythonclass C: @staticmethod def f(arg1, arg2, ...): ...Форма
@staticmethodпредставляет собой декоратор функции – подробнее см. описание определений функций в Определения функций.Его можно вызывать как для класса (например,
C.f()), так и для экземпляра (например,C().f()). Экземпляр игнорируется, учитывается только его класс.Статические методы в Python похожи на те, что встречаются в Java или C++. Также смотрите
classmethod()для варианта, полезного при создании альтернативных конструкторов класса.Как и все декораторы,
staticmethodтакже можно вызвать как обычную функцию и что-то сделать с её результатом. Это необходимо в некоторых случаях, когда вам нужна ссылка на функцию из тела класса и вы хотите избежать автоматического преобразования в метод экземпляра. В таких случаях используйте следующую идиому:pythonclass C: builtin_open = staticmethod(open)Дополнительную информацию о статических методах можно найти в документации по стандартной иерархии типов в разделе Стандартная иерархия типов.
-
class
str(объект='') -
class
str(объект=b'', кодировка='utf-8', ошибки='strict') Возвращает
strверсию объекта object. Подробнее см.str().str– это встроенный строковый класс. Общую информацию о строках см. в Текстовый тип последовательности – str.
-
sum(итерируемый объект[, начальное значение])¶ Суммирует начальное значение и элементы итерируемого объекта слева направо и возвращает общую сумму. Начальное значение по умолчанию равно
0. Элементы итерируемого объекта обычно числа, и начальное значение не может быть строкой.Для некоторых случаев использования есть хорошие альтернативы
sum(). Предпочтительный и быстрый способ объединения последовательности строк – вызов''.join(sequence). Чтобы сложить числа с плавающей запятой с расширенной точностью, см.math.fsum(). Чтобы объединить серию итерабельных объектов, рассмотрите использованиеitertools.chain().
-
super([тип[, объект или тип]])¶ Возвращает прокси-объект, который делегирует вызовы методов родительскому или родственному классу типа type. Это полезно для доступа к унаследованным методам, которые были переопределены в классе. Порядок поиска такой же, как у
getattr(), за исключением того, что сам type пропускается.Атрибут
__mro__типа type перечисляет порядок поиска разрешения методов, используемый какgetattr(), так иsuper(). Этот атрибут является динамическим и может изменяться при обновлении иерархии наследования.Если второй аргумент опущен, возвращается несвязанный объект super. Если второй аргумент является объектом,
isinstance(obj, type)должно быть истинным. Если второй аргумент является типом,issubclass(type2, type)должно быть истинным (это полезно для методов класса).Имеются два типичных случая использования super. В иерархии классов с одиночным наследованием super можно использовать для ссылки на родительские классы без их явного именования, что делает код более поддерживаемым. Это использование тесно параллельно использованию super в других языках программирования.
Второй вариант использования – поддержка кооперативного множественного наследования в динамической среде выполнения. Этот вариант использования уникален для Python и не встречается в статически компилируемых языках или языках, поддерживающих только одиночное наследование. Это позволяет реализовать «ромбовидные диаграммы», где несколько базовых классов реализуют один и тот же метод. Хороший проект требует, чтобы этот метод имел одинаковую сигнатуру вызова во всех случаях (поскольку порядок вызовов определяется во время выполнения, поскольку этот порядок адаптируется к изменениям в иерархии классов и поскольку этот порядок может включать родственные классы, неизвестные до выполнения).
Для обоих случаев использования типичный вызов суперкласса выглядит так:
pythonclass C(B): def method(self, arg): super().method(arg) # То же самое, что: # super(C, self).method(arg)Обратите внимание, что
super()реализован как часть процесса связывания для явного поиска атрибутов через точку, напримерsuper().__getitem__(name). Для этого он реализует собственный метод__getattribute__()для поиска классов в предсказуемом порядке, который поддерживает кооперативное множественное наследование. Соответственно,super()не определен для неявного поиска с помощью инструкций или операторов, таких какsuper()[name].Также обратите внимание, что, помимо формы с нулевым аргументом,
super()не ограничена использованием внутри методов. Форма с двумя аргументами точно задает аргументы и устанавливает соответствующие ссылки. Форма с нулевым аргументом работает только внутри определения класса, поскольку компилятор заполняет необходимые детали для корректного получения определяемого класса, а также для доступа к текущему экземпляру для обычных методов.За практическими рекомендациями по проектированию кооперативных классов с помощью
super()обращайтесь к руководству по использованию super().
-
tuple([итерируемый объект]) tuple– это не функция, а неизменяемый тип последовательности, как описано в Кортежах и Типы последовательностей – list, tuple, range.
-
class
type(объект)¶ -
class
type(name, bases, dict) С одним аргументом возвращает тип объекта object. Возвращаемое значение – это объект типа и обычно тот же объект, что возвращается
object.__class__.Встроенная функция
isinstance()рекомендуется для проверки типа объекта, поскольку она учитывает подклассы.С тремя аргументами возвращает новый объект типа. По сути это динамическая форма оператора
class. Строка name – это имя класса, она становится атрибутом__name__; кортеж bases перечисляет базовые классы и становится атрибутом__bases__; словарь dict – это пространство имён, содержащее определения для тела класса, он копируется в стандартный словарь и становится атрибутом__dict__. Например, следующие два оператора создают идентичные объектыtype:text>>> class X: ... a = 1 ... >>> X = type('X', (object,), dict(a=1))См. также Type Objects.
Изменено в версии 3.6: Подклассы
type, которые не переопределяютtype.__new__, больше не могут использовать форму с одним аргументом для получения типа объекта.
-
vars([объект])¶ Возвращает атрибут
__dict__для модуля, класса, экземпляра или любого другого объекта, имеющего атрибут__dict__.Такие объекты, как модули и экземпляры, имеют обновляемый атрибут
__dict__; однако другие объекты могут иметь ограничения на запись своих атрибутов__dict__(например, классы используютtypes.MappingProxyType, чтобы предотвратить прямое изменение словаря).Без аргумента
vars()работает какlocals(). Обратите внимание, что словарь locals полезен только для чтения, так как обновления словаря locals игнорируются.
-
zip(*iterables)¶ Создаёт итератор, который объединяет элементы из каждого из переданных итерируемых объектов.
Возвращает итератор кортежей, где i-й кортеж содержит i-й элемент из каждой из переданных последовательностей или итерируемых объектов. Итератор останавливается, когда самый короткий из переданных итерируемых объектов исчерпан. С одним итерируемым аргументом возвращает итератор из 1-кортежей. Без аргументов возвращает пустой итератор. Эквивалентно следующему коду:
pythondef 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()в сочетании с оператором*можно использовать для распаковки списка:python>>> 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__(имя, 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приводит к байт-коду, похожему на следующий код:pythonspam = __import__('spam', globals(), locals(), [], 0)Инструкция
import spam.hamприводит к следующему вызову:pythonspam = __import__('spam.ham', globals(), locals(), [], 0)Обратите внимание, что
__import__()возвращает модуль верхнего уровня, поскольку именно этот объект связывается с именем инструкциейimport.С другой стороны, инструкция
from spam.ham import eggs, sausage as sausприводит кpython_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.