Auf eine Funktion innerhalb einer Funktion zugreifen (verschachtelte Funktion?) [duplizieren]

8

Python noob hier. Wie bekomme ich die 'innere' Funktion innerhalb der 'fib' Funktion?

%Vor%     
kassold 14.08.2011, 00:40
quelle

5 Antworten

11

Das kann nicht, es sei denn, fib gibt irgendwie inner zurück. inner ist im Wesentlichen eine lokale Variable innerhalb des Bereichs von fib , und Sie können nicht von außerhalb auf die Lokale einer Funktion zugreifen. (Das wäre nicht einmal sinnvoll, da die Locals nicht existieren, außer wenn die Funktion läuft. Denken Sie darüber nach - wäre es sinnvoll, von außerhalb der Funktion auf fib 's c Variable zuzugreifen?)

    
cdhowie 14.08.2011, 00:44
quelle
8

Verwenden Sie Folgendes nicht.

%Vor%

Man kann es einfach erkennen, wenn man es anschaut, dass es nicht wirklich Python ist, und in diesem Fall nennt es nicht wirklich die "innere" Funktion selbst, es schafft einfach eine neue Funktion wie diese. Ich habe mich auch nicht darum gekümmert, die Globals "korrekt" zu setzen, denn das ist eine schreckliche Sache, die man überhaupt machen kann.

[Ich sollte erwähnen, dass der Punkt des obigen ist zu beachten, dass die Idee, dass Sie Interna von außen nicht zugreifen können, nicht streng wahr ist, obwohl es fast nie eine gute Idee ist. Ausnahmen sind Code-Inspektionen auf Interpreter-Ebene, etc.]

Unrein! Unrein!

    
DSM 14.08.2011 01:21
quelle
5
%Vor%

Mit diesem Code-Snippet können Sie das Innere verwenden.

    
Sunjay Varma 14.08.2011 01:38
quelle
4

Das Folgende scheint zu erreichen, was Sie wollen

%Vor%     
lai 19.07.2015 15:34
quelle
1

Wie von einigen anderen Lesern gesagt, ist es ein Problem des Umfangs. FWIW, das funktioniert, indem man die innere Funktion zurückgibt:

%Vor%

Hier ist eine gute Einführung in pythons Scoping:

Kurze Beschreibung der Scoping-Regeln?

    
Rafael Ferreira 14.08.2011 01:09
quelle

Tags und Links