Während ich Python studierte, verstand ich nicht, was ich sagte, als etwas namens Schließung herauskam, also machte ich mir eine Notiz, damit ich zurückblicken kann, wenn ich es vergesse.
Grundsätzlich können Sie es verstehen, indem Sie sich auf Folgendes beziehen. Python-Tipps: Ich möchte Closure mit Python verwenden [Wann verwenden Sie Verschluss? -Listen Sie drei Verwendungsszenarien auf](http://qiita.com/HirofumiYashima/items/ed17c83f26de3d510b93#python-tipspython%E3%81%A7%E3%82%AF%E3%83%AD%E3%83 % BC% E3% 82% B8% E3% 83% A3% E3% 82% 92% E4% BD% BF% E3% 81% 84% E3% 81% 9F% E3% 81% 84) [Python] -Funktion (4)
Grob gesagt die Schließung ** Der Wert der Variablen in der Funktion ist der Wert der Variablen, die übergeben wurde, als die Funktion deklariert wurde (die Funktion wurde gelesen). ** ** ** Das verstehe ich jetzt.
In einem solchen Fall wird 5 in der Variablen "i" gespeichert, wenn die Funktion gelesen wird. Selbst wenn danach 6 in die Variable "i" eingegeben wird, ist der zurückgegebene Wert 5.
i = 5
def f(arg=i):
print(arg)
i = 6
f()
http://docs.python.jp/3/tutorial/controlflow.html
Ich habe in einer Welt gelebt, die nichts mit Cloja zu tun hat. Warum also? 6 Yaro! Es gibt ein Gefühl. Also, [Wann verwenden Sie Closure? -Listen Sie drei Verwendungsszenarien auf](http://qiita.com/HirofumiYashima/items/ed17c83f26de3d510b93#python-tipspython%E3%81%A7%E3%82%AF%E3%83%AD%E3%83 % BC% E3% 82% B8% E3% 83% A3% E3% 82% 92% E4% BD% BF% E3% 81% 84% E3% 81% 9F% E3% 81% 84) Dies.
def circle_area_func(pi):
"""Gibt eine Funktion zurück, um den Bereich eines Kreises zu finden"""
def circle_area(radius):
return pi * radius ** 2 #Dieser Pi ist ein Kreis_area_func()Wert im Argument von angegeben
return circle_area #Gibt die Funktion als Rückgabewert zurück
#Umfangsverhältnis 3.Generieren Sie eine Funktion zur Berechnung der Fläche bei Einstellung auf 14
ca1 = circle_area_func(3.14)
#Stellen Sie als nächstes das Umfangsverhältnis auf 3 ein.Funktion generieren, wenn auf 141592 eingestellt
ca2 = circle_area_func(3.141592)
#Die beiden oben erstellten Funktionen haben einen Radius=Holen Sie sich das Operationsergebnis, indem Sie 1 als Argument angeben
ca1(1)
ca2(1)
#Die beiden oben erstellten Funktionen haben einen Radius=Erhalten Sie das Operationsergebnis, indem Sie 2 als Argument angeben
ca1(2)
ca2(2)
Die Parameter jeder Funktion haben ihre eigenen Werte, aber ich war mir nicht sicher, warum dies der im Radius gespeicherte Wert war.
Erstens schien ich nicht zu verstehen, was in ca1 von "ca1 = circle_area_func (3.14)" gespeichert war.
Ich habe immer gedacht, dass es in ca1 in der Funktion "circle_area_func (pi)" gespeichert ist, aber es war nicht die Funktion "circle_area (radius)".
def circle_area(radius):
return pi * radius ** 2 #Dieser Pi ist ein Kreis_area_func()Wert im Argument von angegeben
return circle_area
Wenn "ca1 (1)" in der nachfolgenden Verarbeitung ausgeführt wird, wird die Funktion "circle_area (radius)" aufgerufen. Daher wird 1 von "ca1 (1)" im Parameter "Radius" gespeichert.
Die Variable "pi" in der Funktion "circle_area (radius)" ist das Konzept des Abschlusses und enthält nur 3.14, das als Argument in "ca1 = circle_area_func (3.14)" eingegeben wurde.
Es hat enorm viel Zeit gekostet, aber ich habe Hunger.
Recommended Posts