Как преобразовать дизассемблированный python байт-код в стандартный?

Для преобразования дизассемблированного Python байт-кода в стандартный код на Python, вам понадобится использовать модуль dis в стандартной библиотеке Python. Модуль dis предоставляет функции для работы с байт-кодом, включая возможность дизассемблирования исходного кода Python в байт-код, а также обратное преобразование.

Для начала, вам нужно импортировать модуль dis:

import dis

Затем вы можете воспользоваться функцией dis.dis() для дизассемблирования байт-кода. Эта функция принимает в качестве аргумента объект байт-кода и выводит его в удобочитаемой форме. Например, если у вас есть дизассемблированный код в виде строки, вы можете создать объект байт-кода с помощью функции compile():

code = """
def hello():
    print("Hello, world!")
"""

bytecode = compile(code, "<string>", "exec")
dis.dis(bytecode)

Этот код дизассемблирует байт-код функции hello и выводит его на экран. Результат будет выглядеть примерно так:

  2           0 LOAD_NAME                0 (print)
              2 LOAD_CONST               0 ('Hello, world!')
              4 CALL_FUNCTION            1
              6 POP_TOP
              8 LOAD_CONST               1 (None)
             10 RETURN_VALUE

Если же у вас уже есть объект функции или метода, вы можете получить его байт-код с помощью функции dis.get_instructions(). Например:

def hello():
    print("Hello, world!")

for instruction in dis.get_instructions(hello):
    print(instruction)

Этот код выведет все инструкции байт-кода функции hello. Результат будет выглядеть примерно так:

Instruction(opname='LOAD_NAME', opcode=101, arg=0, argval='print', argrepr='print', offset=0, starts_line=2, is_jump_target=False)
Instruction(opname='LOAD_CONST', opcode=100, arg=0, argval='Hello, world!', argrepr="'Hello, world!'", offset=2, starts_line=None, is_jump_target=False)
Instruction(opname='CALL_FUNCTION', opcode=131, arg=1, argval=1, argrepr='1 positional, 0 keyword pair', offset=4, starts_line=None, is_jump_target=False)
Instruction(opname='POP_TOP', opcode=1, arg=None, argval=None, argrepr='', offset=6, starts_line=None, is_jump_target=False)
Instruction(opname='LOAD_CONST', opcode=100, arg=1, argval=None, argrepr='None', offset=8, starts_line=None, is_jump_target=False)
Instruction(opname='RETURN_VALUE', opcode=83, arg=None, argval=None, argrepr='', offset=10, starts_line=None, is_jump_target=False)

Если вы хотите получить исходный код из байт-кода, то это невозможно, так как байт-код не содержит информацию о переменных, комментариях и структуре кода на Python. Байт-код содержит только инструкции для интерпретатора Python.