Python 閉包,函式分隔作用域,nonlocal宣告非區域性變數操作示例
阿新 • • 發佈:2020-01-09
本文例項講述了Python 閉包,函式分隔作用域,nonlocal宣告非區域性變數操作。分享給大家供大家參考,具體如下:
例項物件也可以實現閉包的功能,不過例項物件消耗的資源(記憶體)比閉包多。
demo.py(閉包):
# 閉包,分割作用域。 外層函式內部巢狀內部函式,外層函式分割變數作用域,並返回內部函式的引用。 # 外層函式負責分割作用域,內層函式才是閉包提供的功能。 外層函式返回內層函式的引用,供外部使用。 def my_line(k,b): # k,b只在my_line函式以及create_y函式內部有效,在外部無效。 比用全域性變數節省資源。 def create_y(x): print(k*x+b) return create_y line_1 = my_line(1,2) line_1(0) line_1(1) line_1(2) line_2 = my_line(11,22) line_2(0) line_2(1) line_2(2)
執行結果:
2
3
4
22
33
44
demo.py(nonlocal,宣告閉包中的變數):
x = 100 def func_1(): x = 200 def func_2(): # 如果要使用func_1(閉包)中的變數,需要使用nonlocal宣告。 nonlocal x print("x值為:%d" % x) # 200 x = 300 return func_2 t1 = func_1() t1()
執行結果:
x值為:200
更多關於Python相關內容可檢視本站專題:《Python資料結構與演算法教程》、《Python Socket程式設計技巧總結》、《Python函式使用技巧總結》、《Python字串操作技巧彙總》及《Python入門與進階經典教程》
希望本文所述對大家Python程式設計有所幫助。