Python 3.4+disпонятие
dis.Instruction
анализ байт-кода
Именованный кортеж с описанием одной инструкции байт-кода: opname, opcode, arg, argval, argrepr, offset, positions и др.
Синтаксис
Instruction(opname, opcode, arg, argval, argrepr, offset, ...)
Самостоятельно его не создают — его выдают get_instructions() и Bytecode. arg — сырое число, argval — уже понятное значение (имя переменной, константа), argrepr — его строка для листинга. Поля менялись: positions с точными колонками появилось в 3.11, а в 3.13 starts_line из номера строки стал bool, номер переехал в line_number — код, читавший starts_line как число, тихо сломался.
Примеры
import dis
def f():
return 'hello'
ins = [i for i in dis.get_instructions(f) if i.argval == 'hello'][0]
print(isinstance(ins, tuple)) # → True
print(ins._fields[:5]) # → ('opname', 'opcode', 'arg', 'argval', 'argrepr')
print(ins.argval, type(ins.arg).__name__) # → hello int
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности