python3裝飾器的簡單解釋
阿新 • • 發佈:2018-06-21
返回 如果 發揮 隱藏 使用 font urn pre toolbar #閉包,也叫詞法閉包:如下所示函數A主要是為了函數B提供運行環境的
#閉包只是在表現和形式上像函數,其實閉包並不是函數
#由函數在嵌套環境中,內層函數裏,對外層函數作用域的變量進行了引用,那麽在外層函數返回後,內層函數依然可是使用外層函數的變量,這樣的變量就構成了可以使用時的環境
#所以閉包對於隱藏狀態,以及在函數和作用域中進行切換,一個函數可以發揮很多種功能
#
#閉包只是在表現和形式上像函數,其實閉包並不是函數
#由函數在嵌套環境中,內層函數裏,對外層函數作用域的變量進行了引用,那麽在外層函數返回後,內層函數依然可是使用外層函數的變量,這樣的變量就構成了可以使用時的環境
#所以閉包對於隱藏狀態,以及在函數和作用域中進行切換,一個函數可以發揮很多種功能
#
#閉包:如下所示我們只需要不斷的變化f調用變化就可以是函數B跟著變化了 def A(num1,num2): def B(x,y): print("我是%s!"%(num1+x)) print("我是%s!"%(num2+y)) return B f=A(1,2) f(3,4)
裝飾器:
一下面的例子為例,如果我們有一個簡單的函數C,我們在不動其他函數的基礎上需要給函數C增加新的功能,需要怎麽做呢?這就需要用到裝飾器了
#這是不用裝飾器時: def A(func): def B(): print("我是附加功能1!") #附加功能 func() print("我是附加功能2!") # 附加功能 return B def C(): print("我是函數原來的功能!") res=A(C) res()
#用裝飾器時: def A(func): def B(): print("我是附加功能1!") #附加功能 func() print("我是附加功能2!") #附加功能 return B @A def C(): print("我是函數原來的功能!") C()
#帶參數的裝飾器: def A(func): def B(x): print("我是附加功能1!") #附加功能 func(x) print("我是附加功能2!") #附加功能 return B @A def C(x): print("我是函數原來的功能!%s"%x) C('hello action!')
python3裝飾器的簡單解釋