object.md · Markdown – Документация Python
Документация Python неофициальный перевод

object.md

698 строк · 28.2 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/3.1/c-api/object.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# Протокол объектов89**int `PyObject_Print`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, FILE *\*fp*, int *flags*)**1011Выводит объект1213*o*1415в файл1617*fp*1819. Возвращает2021`-1`2223в случае ошибки. Аргумент flags используется для включения определённых опций вывода. Единственная поддерживаемая в настоящее время опция –2425`Py_PRINT_RAW`2627; если она указана, выводится2829[`str()`](https://python-all.ru/3.1/library/functions.html#str)3031объекта вместо3233[`repr()`](https://python-all.ru/3.1/library/functions.html#repr)3435.3637**int `PyObject_HasAttr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*attr\_name*)**3839Возвращает4041`1`4243, если4445*o*4647имеет атрибут4849*attr\_name*5051, и5253`0`5455в противном случае. Это эквивалентно выражению Python5657`hasattr(o, attr_name)`5859. Эта функция всегда завершается успешно.6061**int `PyObject_HasAttrString`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, const char *\*attr\_name*)**6263Возвращает6465`1`6667, если6869*o*7071имеет атрибут7273*attr\_name*7475, и7677`0`7879в противном случае. Это эквивалентно выражению Python8081`hasattr(o, attr_name)`8283. Эта функция всегда завершается успешно.8485**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_GetAttr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*attr\_name*)**8687*Возвращаемое значение: новая ссылка.*8889Извлекает атрибут с именем *attr\_name* из объекта *o*. Возвращает значение атрибута при успехе или *NULL* при неудаче. Это эквивалент выражения Python `o.attr_name`.9091**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_GetAttrString`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, const char *\*attr\_name*)**9293*Возвращаемое значение: новая ссылка.*9495Извлекает атрибут с именем *attr\_name* из объекта *o*. Возвращает значение атрибута при успехе или *NULL* при неудаче. Это эквивалент выражения Python `o.attr_name`.9697**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_GenericGetAttr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*name*)**9899Обобщённая функция получения атрибута, предназначенная для размещения в слот100101`tp_getattro`102103объекта типа. Она ищет дескриптор в словаре классов в MRO объекта, а также атрибут в104105`__dict__`106107объекта (если он присутствует). Как описано в108109[*Implementing Descriptors*](https://python-all.ru/3.1/reference/datamodel.html#descriptors)110111, дескрипторы данных имеют приоритет над атрибутами экземпляра, а дескрипторы без данных – нет. В противном случае возбуждается112113[`AttributeError`](https://python-all.ru/3.1/library/exceptions.html#AttributeError)114115.116117**int `PyObject_SetAttr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*attr\_name*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*v*)**118119Устанавливает значение атрибута с именем120121*attr\_name*122123для объекта124125*o*126127равным128129*v*130131. Возвращает132133`-1`134135при неудаче. Это эквивалент оператора Python136137`o.attr_name = v`138139.140141**int `PyObject_SetAttrString`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, const char *\*attr\_name*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*v*)**142143Устанавливает значение атрибута с именем144145*attr\_name*146147для объекта148149*o*150151равным152153*v*154155. Возвращает156157`-1`158159при неудаче. Это эквивалент оператора Python160161`o.attr_name = v`162163.164165**int `PyObject_GenericSetAttr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*name*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*value*)**166167Обобщённая функция установки атрибута, предназначенная для размещения в слот168169`tp_setattro`170171объекта типа. Она ищет дескриптор данных в словаре классов в MRO объекта, и если найден, то имеет приоритет над установкой атрибута в словаре экземпляра. В противном случае, атрибут устанавливается в172173`__dict__`174175объекта (если он присутствует). Иначе возбуждается176177[`AttributeError`](https://python-all.ru/3.1/library/exceptions.html#AttributeError)178179и возвращается180181`-1`182183.184185**int `PyObject_DelAttr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*attr\_name*)**186187Удаляет атрибут с именем188189*attr\_name*190191для объекта192193*o*194195. Возвращает196197`-1`198199при неудаче. Это эквивалент оператора Python200201`del o.attr_name`202203.204205**int `PyObject_DelAttrString`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, const char *\*attr\_name*)**206207Удаляет атрибут с именем208209*attr\_name*210211для объекта212213*o*214215. Возвращает216217`-1`218219при неудаче. Это эквивалент оператора Python220221`del o.attr_name`222223.224225**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_RichCompare`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*, int *opid*)**226227*Возвращаемое значение: новая ссылка.*228229Сравнивает значения *o1* и *o2* с помощью операции, заданной *opid*, которая должна быть одной из `Py_LT`, `Py_LE`, `Py_EQ`, `Py_NE`, `Py_GT` или `Py_GE`, что соответствует `<`, `<=`, `==`, `!=`, `>` или `>=` соответственно. Это эквивалент выражения Python `o1 op o2`, где `op` – оператор, соответствующий *opid*. Возвращает результат сравнения в случае успеха или *NULL* при ошибке.230231**int `PyObject_RichCompareBool`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o1*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o2*, int *opid*)**232233Сравнивает значения234235*o1*236237и238239*o2*240241с помощью операции, заданной242243*opid*244245, которая должна быть одной из246247`Py_LT`248249,250251`Py_LE`252253,254255`Py_EQ`256257,258259`Py_NE`260261,262263`Py_GT`264265или266267`Py_GE`268269, что соответствует270271`<`272273,274275`<=`276277,278279`==`280281,282283`!=`284285,286287`>`288289или290291`>=`292293соответственно. Возвращает294295`-1`296297при ошибке,298299`0`300301если результат ложный,302303`1`304305в противном случае. Это эквивалент выражения Python306307`o1 op o2`308309, где310311`op`312313– оператор, соответствующий314315*opid*316317.318319> **Примечание**320>321> Если *o1* и *o2* – один и тот же объект, [`PyObject_RichCompareBool()`](https://python-all.ru/3.1/c-api/object.html#PyObject_RichCompareBool) всегда вернёт `1` для `Py_EQ` и `0` для `Py_NE`.322323**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_Repr`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**324325*Возвращаемое значение: новая ссылка.*326327Вычисляет строковое представление объекта *o*. Возвращает строковое представление в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `repr(o)`. Вызывается встроенной функцией [`repr()`](https://python-all.ru/3.1/library/functions.html#repr).328329**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_ASCII`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**330331Как и [`PyObject_Repr()`](https://python-all.ru/3.1/c-api/object.html#PyObject_Repr), вычисляет строковое представление объекта *o*, но экранирует не-ASCII символы в строке, возвращаемой [`PyObject_Repr()`](https://python-all.ru/3.1/c-api/object.html#PyObject_Repr), используя управляющие последовательности `\x`, `\u` или `\U`. Создаёт строку, похожую на ту, что возвращала [`PyObject_Repr()`](https://python-all.ru/3.1/c-api/object.html#PyObject_Repr) в Python 2. Вызывается встроенной функцией [`ascii()`](https://python-all.ru/3.1/library/functions.html#ascii).332333**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_Str`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**334335*Возвращаемое значение: новая ссылка.*336337Вычисляет строковое представление объекта *o*. Возвращает строковое представление в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `str(o)`. Вызывается встроенной функцией [`str()`](https://python-all.ru/3.1/library/functions.html#str) и, следовательно, функцией [`print()`](https://python-all.ru/3.1/library/functions.html#print).338339**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_Bytes`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**340341Вычисляет байтовое представление объекта *o*. *NULL* возвращается при ошибке и объект bytes при успехе. Это эквивалентно выражению Python `bytes(o)`.342343**int `PyObject_IsInstance`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*inst*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*cls*)**344345Возвращает346347`1`348349, если350351*inst*352353является экземпляром класса354355*cls*356357или подкласса358359*cls*360361, и362363`0`364365в противном случае. В случае ошибки возвращает366367`-1`368369и устанавливает исключение. Если370371*cls*372373является объектом типа, а не объектом класса,374375[`PyObject_IsInstance()`](https://python-all.ru/3.1/c-api/object.html#PyObject_IsInstance)376377возвращает378379`1`380381, если382383*inst*384385имеет тип386387*cls*388389. Если390391*cls*392393– кортеж, проверка будет выполнена по каждому элементу в394395*cls*396397. Результат будет398399`1`400401, когда хотя бы одна из проверок вернёт402403`1`404405, иначе будет406407`0`408409. Если410411*inst*412413не является экземпляром класса, а414415*cls*416417– ни объектом типа, ни объектом класса, ни кортежем,418419*inst*420421должен иметь атрибут422423`__class__`424425– отношение класса значения этого атрибута к426427*cls*428429будет использовано для определения результата этой функции.430431Определение подкласса выполняется достаточно прямолинейно, но содержит тонкость, о которой разработчикам расширений системы классов стоит знать . Если `A` и `B` являются объектами классов, `B` является подклассом `A`, если он наследует от `A` прямо или косвенно. Если хотя бы один из них не является объектом класса, используется более общий механизм для определения отношения классов между двумя объектами. При проверке, является ли *B* подклассом *A*, если *A* равен *B*, [`PyObject_IsSubclass()`](https://python-all.ru/3.1/c-api/object.html#PyObject_IsSubclass) возвращает true. Если *A* и *B* – разные объекты, атрибут *B* `__bases__` ищется в глубину на наличие *A* – наличие атрибута `__bases__` считается достаточным для такого определения.432433**int `PyObject_IsSubclass`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*derived*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*cls*)**434435Возвращает436437`1`438439, если класс440441*derived*442443идентичен классу444445*cls*446447или наследуется от него, иначе возвращает448449`0`450451. В случае ошибки возвращает452453`-1`454455. Если456457*cls*458459является кортежем, проверка будет выполнена для каждого элемента460461*cls*462463. Результат будет464465`1`466467, когда хотя бы одна из проверок возвращает468469`1`470471, иначе472473`0`474475. Если476477*derived*478479или480481*cls*482483не являются реальными объектами классов (или кортежем), эта функция использует описанный выше общий алгоритм.484485**int `PyCallable_Check`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**486487Определяет, является ли объект488489*o*490491вызываемым. Возвращает492493`1`494495, если объект вызываем, и496497`0`498499в противном случае. Эта функция всегда завершается успешно.500501**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_Call`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*callable\_object*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*args*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*kw*)**502503*Возвращаемое значение: новая ссылка.*504505Вызывает вызываемый объект Python *callable\_object* с аргументами, заданными кортежем *args*, и именованными аргументами, заданными словарём *kw*. Если именованные аргументы не нужны, *kw* может быть *NULL*. *args* не должен быть *NULL*; если аргументы не нужны, используйте пустой кортеж. Возвращает результат вызова в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `callable_object(*args, **kw)`.506507**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_CallObject`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*callable\_object*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*args*)**508509*Возвращаемое значение: новая ссылка.*510511Вызывает вызываемый объект Python *callable\_object* с аргументами, заданными кортежем *args*. Если аргументы не нужны, то *args* может быть *NULL*. Возвращает результат вызова в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `callable_object(*args)`.512513**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_CallFunction`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*callable*, char *\*format*, ...)**514515*Возвращаемое значение: новая ссылка.*516517Вызывает вызываемый объект Python *callable* с переменным числом аргументов C. Аргументы C описываются строкой форматирования в стиле [`Py_BuildValue()`](https://python-all.ru/3.1/c-api/arg.html#Py_BuildValue). Формат может быть *NULL*, что означает отсутствие аргументов. Возвращает результат вызова в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `callable(*args)`. Обратите внимание: если передаются только аргументы типа [`PyObject *`](https://python-all.ru/3.1/c-api/structures.html#PyObject), то более быстрой альтернативой будет [`PyObject_CallFunctionObjArgs()`](https://python-all.ru/3.1/c-api/object.html#PyObject_CallFunctionObjArgs).518519**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_CallMethod`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, char *\*method*, char *\*format*, ...)**520521*Возвращаемое значение: новая ссылка.*522523Вызывает метод с именем *method* объекта *o* с переменным числом аргументов C. Аргументы C описываются строкой форматирования в стиле [`Py_BuildValue()`](https://python-all.ru/3.1/c-api/arg.html#Py_BuildValue), которая должна создавать кортеж. Формат может быть *NULL*, что означает отсутствие аргументов. Возвращает результат вызова в случае успеха или *NULL* при ошибке. Это эквивалент выражения Python `o.method(args)`. Обратите внимание: если передаются только аргументы типа [`PyObject *`](https://python-all.ru/3.1/c-api/structures.html#PyObject), то более быстрой альтернативой будет [`PyObject_CallMethodObjArgs()`](https://python-all.ru/3.1/c-api/object.html#PyObject_CallMethodObjArgs).524525**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_CallFunctionObjArgs`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*callable*, ..., NULL)**526527*Возвращаемое значение: новая ссылка.*528529Вызывает вызываемый объект Python *callable* с переменным числом аргументов типа [`PyObject*`](https://python-all.ru/3.1/c-api/structures.html#PyObject). Аргументы передаются как переменное число параметров, за которыми следует *NULL*. Возвращает результат вызова в случае успеха или *NULL* при ошибке.530531**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_CallMethodObjArgs`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*name*, ..., NULL)**532533*Возвращаемое значение: новая ссылка.*534535Вызывает метод объекта *o*, где имя метода передаётся в виде строкового объекта Python в *name*. Вызывается с переменным числом аргументов [`PyObject*`](https://python-all.ru/3.1/c-api/structures.html#PyObject). Аргументы передаются как переменное число параметров, за которыми следует *NULL*. Возвращает результат вызова в случае успеха или *NULL* при ошибке.536537**long `PyObject_Hash`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**538539Вычисляет и возвращает хеш-значение объекта *o*. В случае ошибки возвращает `-1`. Это эквивалент выражения Python `hash(o)`.540541**long `PyObject_HashNotImplemented`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**542543Устанавливает544545[`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError)546547, сообщающий, что548549`type(o)`550551не хешируется, и возвращает552553`-1`554555. Эта функция получает особую обработку, если помещена в слот556557`tp_hash`558559, позволяя типу явно указать интерпретатору, что он не хешируется.560561**int `PyObject_IsTrue`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**562563Возвращает564565`1`566567, если объект568569*o*570571считается истинным, и572573`0`574575в противном случае. Это эквивалент выражения Python576577`not not o`578579. В случае ошибки возвращает580581`-1`582583.584585**int `PyObject_Not`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**586587Возвращает588589`0`590591, если объект592593*o*594595считается истинным, и596597`1`598599в противном случае. Это эквивалент выражения Python600601`not o`602603. В случае ошибки возвращает604605`-1`606607.608609**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_Type`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**610611*Возвращаемое значение: новая ссылка.*612613Если *o* не равно *NULL*, возвращает объект типа, соответствующий типу объекта *o*. В случае ошибки возбуждает [`SystemError`](https://python-all.ru/3.1/library/exceptions.html#SystemError) и возвращает *NULL*. Это эквивалент выражения Python `type(o)`. Эта функция увеличивает счётчик ссылок возвращаемого значения. Нет особой причины использовать эту функцию вместо обычного выражения `o->ob_type`, которое возвращает указатель типа [`PyTypeObject*`](https://python-all.ru/3.1/c-api/type.html#PyTypeObject), за исключением случаев, когда требуется увеличенный счётчик ссылок.614615**int `PyObject_TypeCheck`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyTypeObject](https://python-all.ru/3.1/c-api/type.html#PyTypeObject) *\*type*)**616617Возвращает истину, если объект618619*o*620621имеет тип622623*type*624625или является подтипом626627*type*628629. Оба параметра не должны быть630631*NULL*632633.634635**Py\_ssize\_t `PyObject_Length`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**636637**Py\_ssize\_t `PyObject_Size`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**638639Возвращает длину объекта *o*. Если объект *o* предоставляет протоколы последовательности и отображения, возвращается длина последовательности. При ошибке возвращается `-1`. Это эквивалент выражения Python `len(o)`.640641**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_GetItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*key*)**642643*Возвращаемое значение: новая ссылка.*644645Возвращает элемент *o*, соответствующий объекту *key*, или *NULL* при ошибке. Это эквивалентно выражению Python `o[key]`.646647**int `PyObject_SetItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*key*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*v*)**648649Сопоставляет объект650651*key*652653со значением654655*v*656657. При ошибке возвращает658659`-1`660661. Это эквивалент инструкции Python662663`o[key] = v`664665.666667**int `PyObject_DelItem`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*, [PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*key*)**668669Удаляет отображение для670671*key*672673из674675*o*676677. При ошибке возвращает678679`-1`680681. Это эквивалент инструкции Python682683`del o[key]`684685.686687**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_Dir`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**688689*Возвращаемое значение: новая ссылка.*690691Это эквивалент выражения Python `dir(o)`, возвращает (возможно, пустой) список строк, соответствующий аргументу-объекту, или *NULL* в случае ошибки. Если аргумент равен *NULL*, это аналогично Python `dir()`, возвращающему имена текущих локальных переменных; в этом случае, если активного кадра выполнения нет, возвращается *NULL*, но [`PyErr_Occurred()`](https://python-all.ru/3.1/c-api/exceptions.html#PyErr_Occurred) вернёт ложь.692693**[PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject)\* `PyObject_GetIter`([PyObject](https://python-all.ru/3.1/c-api/structures.html#PyObject) *\*o*)**694695*Возвращаемое значение: новая ссылка.*696697Это эквивалент выражения Python `iter(o)`. Возвращает новый итератор для аргумента-объекта или сам объект, если он уже является итератором. Возбуждает [`TypeError`](https://python-all.ru/3.1/library/exceptions.html#TypeError) и возвращает *NULL*, если объект не может быть итерирован.698