Ich bin neu im Programmieren und überfliege einige Themen zu Funktionen und Klassen. Nach dem Lesen von Funktionen und umschließenden Funktionen habe ich versucht, die Vererbung in Klassen nachzuahmen, indem ich nur Funktionen und deren Umfang minipuliere.Umschließende Funktionen Scope Search?
Beispiel:
für den Code
def f1():
t=1
def f2(x):
return eval(x)
return f2
Warum ich einen Namen Fehlermeldung erhalten Sie, wenn
f1()('t') #expecting 1 return
zu tun, aber nicht, wenn
def f1():
t=1
def f2():
return t
return f2
sagen definieren
Ich könnte dieses Problem lösen, indem ich T als nonlocal im Bereich von f2 definiere, was bedeutet, dass der erste Code nur im lokalen Bereich von f2 aussieht. Warum passiert das? `
Bitte drücken Sie den Code – ForceBru
[Related.] (Https://stackoverflow.com/questions/44425363/is-it-true-in-python-closure-will-be- stored-if-and-only-if -it-is-country-lex) –
Schauen Sie sich die angenommene Antwort von https://stackoverflow.com/questions/4020419/why-arent-python-nested-functions-called-closures - sehr nette Erklärung dort. – mkiever