Python Glossary English

Python 3.4+disфункция

dis.get_instructions()

анализ байт-кода

Возвращает итератор объектов Instruction — байт-код в виде данных, которые можно фильтровать и анализировать программно.

Синтаксис

dis.get_instructions(x, *, first_line=None, adaptive=False)

Это одноразовый итератор: второй list() по нему вернёт пустой список; для повторного обхода берите dis.Bytecode. Имена опкодов меняются между версиями (LOAD_FAST в 3.14 превращается в LOAD_FAST_BORROW, BINARY_ADD в 3.11 — в BINARY_OP), поэтому фильтр по opname надёжен только для устойчивых опкодов вроде LOAD_GLOBAL. Параметр show_caches с 3.13 ни на что не влияет.

Примеры

import dis
def size(s):
    return len(s)
names = [i.argval for i in dis.get_instructions(size) if i.opname == 'LOAD_GLOBAL']
print(names)  # → ['len']
import dis
def f(x):
    return x
it = dis.get_instructions(f)
print(len(list(it)) > 0)  # → True
print(len(list(it)))  # → 0

См. также

Открыть в полном глоссарииdocs.python.orgСообщить о неточности