LINUX.ORG.RU

У функции есть поле func_code содержащее объект кода.

11.9 Детали реализации
11.9.1 Объекты кода
Объекты кода (code) используются для представления байт-компилированного испол-
няемого кода, такого как тело функции. Разница между объектом-кодом и объектом-
функцией состоит в том, что объект-функция содержит явную ссылку на словарь, пред-
ставляющий глобальное пространство имен модуля, в котором определена функция, в то
время как объект-код “не знает” контекста, в котором он будет выполняться. Кроме того,значения аргументов по умолчанию сохраняются в объекте-функции, так как они вычис-
ляются во время выполнения. Объект-код, в отличие от объекта-функции, неизменяем
и не содержит ссылок (прямо или косвенно) на изменяемые объекты.
Объект-код создается с помощью встроенной функции compile(), а также мо-
жет быть извлечен из объекта-функции используя его атрибут func_code. Объект-код
можно выполнить с помощью инструкции exec или вычислить представляемое им вы-
ражение с помощью встроенной функции eval().
Объекты кода имеют следующие атрибуты, доступные только для чтения:
co_name
Содержит имя функции (или ’?’, если объект-код создан с помощью функции
compile()).
co_argcount
Число позиционных аргументов функции (включая аргументы, имеющие значения
по умолчанию).
co_nlocals
Число локальных переменных (включая аргументы функции).
co_varnames
Кортеж, содержащий имена локальных переменных.
co_code
Строка, представляющая последовательность байт-компилированных инструкций.
co_consts
Кортеж, содержащий значения используемых литеральных выражений.
co_names
Кортеж всех используемых в байт-коде имен.
co_filename
Имя файла, из которого объект-код был скомпилирован.
co_firstlineno
Номер первой строки определения функции в файле.
co_lnotab
Строка, представляющая отображение смещения в байт-коде в номера строк (пу-
стая строка, если включена оптимизация).
co_stacksize
Необходимый для выполнения размер стека (включая локальные переменные).
co_flags
Число, представляющее различные флаги интерпретатора. Для co_flags опреде-
лены следующие биты (наиболее важные): бит 0x04 установлен, если функция использует запись ‘*args’ (воспринимает произвольное число позиционных аргу-
ментов); бит 0x08 установлен, если функция использует запись ‘**kwds’ (воспри-
нимает произвольное число именованных аргументов).


(с) Гвидо Ван Росуум и Ко, прогр на ЯП питон

AIv ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.