Heim > Artikel > Backend-Entwicklung > Eine kurze Einführung in Schließungen in Python (mit Beispielen)
Dieser Artikel bietet Ihnen eine kurze Einführung in Schließungen in Python (mit Beispielen). Freunde in Not können darauf verweisen.
1: Einführung
Funktionale Programmierung ist für Programme nicht notwendig, spielt aber eine wichtige Rolle bei der Vereinfachung von Programmen.
Alles in Python ist ein Objekt, und Funktionen sind auch Objekte
a = 1 a = 'str' a = func
2: Abschluss
Ein Abschluss ist eine Entität, die aus einer Funktion und ihrer zugehörigen Referenzumgebung besteht ( That ist: Abschluss = Funktion + Umgebungsvariable)
Wenn in einer inneren Funktion auf eine Variable im äußeren Bereich (aber nicht im globalen Bereich) verwiesen wird, wird die innere Funktion als Abschluss (Abschluss) betrachtet. Dies ist die einfachste Erklärung! Und der Wert dieser Variablen wird nicht durch denselben Variablenwert im Modul geändert!
3: Die Rolle des Abschlusses
Durch die Verwendung weniger globaler Variablen kann die Verwendung globaler Variablen vermieden werden.
Sie können den Wert innerhalb der Funktion von außerhalb der Funktion aufrufen:
print( f .__closure__[0].cell_contents)
# Gibt den Wert der Umgebungsvariablen im Abschluss zurück!
Modulbetrieb ist nicht möglich!
# ----------------------------------------------# # 闭包 # ----------------------------------------------# # 函数内部定义函数 def curve_pre(): def curve(): print("抛物线") pass return curve # 不能直接调用函数内部的函数 # curve() func = curve_pre() func() def curve_pre1(): a = 25 # 环境变量a的值在curve1外部 def curve1(x): print("抛物线") return a * x ** 2 return curve1 # 返回了的闭包 f = curve_pre1() result = f(2) print(result) # 当在外部定义变量的时候,结果不会改变 a = 10 print(f(2)) print(f.__closure__) # 检测函数是不是闭包 print(f.__closure__[0].cell_contents) # 返回闭包中环境变量的值! # ----------------------------------------------# # 闭包的实例 # ----------------------------------------------# def f1(): m = 10 def f2(): m = 20 # 局部变量 print("1:", m) # m = 20 print("2:", m) # m = 10 f2() print("3:", m) # m = 10,臂包里面的值不会影响闭包外面的值 return f2 f1() f = f1() print(f.__closure__) # 判断是不是闭包 # ----------------------------------------------# # 闭包解决一个问题 # ----------------------------------------------# # 在函数内部修改全局变量的值计算某人的累计步数 # 普通方法实现 sum_step = 0 def calc_foot(step=0): global sum_step sum_step = sum_step + step while True: x_step = input('step_number:') if x_step == ' ': # 输入空格结束输入 print('total step is ', sum_step) break calc_foot(int(x_step)) print(sum_step) # 闭包方式实现----->少使用全局变量,闭包可以避免 def factory(pos): def move(step): nonlocal pos # 修改外部作用域而非全局变量的值 new_pose = pos + step pos = new_pose # 保存修改后的值 return pos return move tourist = factory(0) print(tourist(2)) print(tourist(2)) print(tourist(2))
Das obige ist der detaillierte Inhalt vonEine kurze Einführung in Schließungen in Python (mit Beispielen). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!