1. 程式人生 > 程式設計 >Python 閉包,函式分隔作用域,nonlocal宣告非區域性變數操作示例

Python 閉包,函式分隔作用域,nonlocal宣告非區域性變數操作示例

本文例項講述了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程式設計有所幫助。