Python-Bytecode-Ausführung Schritt für Schritt verstehen (mit dis.dis) – Was bedeuten die Zahlen? [Duplikat]Python

Python-Programme
Guest
 Python-Bytecode-Ausführung Schritt für Schritt verstehen (mit dis.dis) – Was bedeuten die Zahlen? [Duplikat]

Post by Guest »

Ich versuche zu verstehen, wie Python-Bytecode mithilfe des Moduls „dis“ Zeile für Zeile ausgeführt wird. Ich habe eine einfache Funktion geschrieben und analysiere den zerlegten Bytecode dafür, aber ich habe Probleme, einige Teile der Ausgabe zu verstehen.
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)
Die Ausgabe von dis.dis(sum) ist wie folgt:

Code: Select all

     2           RESUME                   0
Image

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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post