Hier ist mein Code :
Code: Select all
import dis
def sum(a, b):
c = a + b
print(f"the sum of a and b is {c}")
sum(3, 45)
dis.dis(sum)
Code: Select all
2 RESUME 0

Was ich verstehe:
Der Bytecode beginnt in Zeile 2 und geht dann zu Zeile 3.
Zeile 3 ist ein „Superbefehl“, der die lädt Werte von a und b in den Stapel, führt Addition durch, und speichert dann das Ergebnis in c im Array am Index.
Meine Verwirrung:
In der Zeile LOAD_FAST_LOAD_FAST 1 ( a, b), ich verstehe, dass die Anweisung LOAD_FAST_LOAD_FAST die Werte von a und b in den Stapel lädt, aber was bedeutet die 1 vor (a, b)? Ich weiß, dass STORE_FAST 2 (c) bedeutet, dass der Wert von c im lokalen Variablenarray bei Index 2 gespeichert wird, aber was genau bedeutet die Zahl 1 in der Anweisung LOAD_FAST 1? Was bedeutet 0 in BINARY_OP?
Kann mir bitte jemand helfen, diesen Bytecode Schritt für Schritt zu verstehen? Es ist super verwirrend für mich.