Nuancen beim Arbeiten mit inneren Funktionen in Python
In Python kann es nicht nur verschachtelte
Funktionen geben, sondern eine Funktion kann auch
eine andere zurückgeben. Zum Beispiel, lassen Sie die Funktion outer
den Quellcode der Funktion inner
als Ergebnis zurückgeben:
def outer():
def inner():
return '+++'
return inner
Schreiben wir den Aufruf von outer in
die Variable res:
res = outer()
print(res)
Nach der Ausführung des Codes wird ein Objekt mit der Funktion ausgegeben:
<function outer.<locals>.inner at 0x000001564A212B90>
Wenn man die Variable res jedoch mit
runden Klammern aufruft, wird die Nachricht
'+++' zurückgegeben:
print(res()) # gibt '+++' aus
Man kann den Code so umschreiben, dass in res
outer mit zwei runden Klammern
geschrieben wird - um sich selbst und die Funktion
inner aufzurufen. Daraus folgt, dass man
zusätzliche runde Klammern rechts von der äußeren Funktion
in der Anzahl der in ihr verschachtelten Funktionen
schreiben kann:
res = outer()()
print(res) # gibt '+++' aus
Gegeben ist der folgende Code:
def outer():
def inner(num):
return num + 2
return inner
res = outer()(3)
print(res)
Sagen Sie, was in der Konsole ausgegeben wird.
Gegeben ist der folgende Code:
def outer():
def inner(txt):
return 'hello, ' + txt
return inner
res = outer()
print(res)
Sagen Sie, was in der Konsole ausgegeben wird.