Lassen wir haben diesen Code:Funktion innerhalb der Funktion - jedes Mal?
def big_function():
def little_function():
.......
.........
Die Python-Dokumentation sagt über def
Aussage:
Eine Funktionsdefinition eine ausführbare Anweisung ist. Seine Ausführung bindet der Name der Funktion ...
Also, die Frage ist: Hat def little_function()
jedes Mal ausgeführt wird, wenn big_function
aufgerufen wird? Frage ist über def
Aussage genau, nicht die little_function()
Körper.
Woher wissen Sie, wie viel Aufwand die Bytecode-Anweisung 'MAKE_FUNCTION' ausführt? Sieht so aus, als müsste in den meisten anderen Sprachen Speicher reserviert werden, was normalerweise eine langsame Operation ist. – martineau
@martineau Nein, es gibt keine große Speicherzuweisung. Die Operation 'MAKE_FUNCTION' erhöht einfach den Referenzcode für das Codeobjekt, es muss nicht kopiert werden. Sicherlich wird ein neues Funktionsobjekt erstellt, das die Zuweisung eines neuen 'PyFunctionObject' beinhaltet, aber da * jede * Operation ein Python-Objekt zuweist, beeinträchtigt es die Performances nicht" signifikant "(offensichtlich hängt das Wesentliche vom Rest des Codes von' my_function ab '). – Bakuriu
Große Erklärung, danke! – dondublon