通俗易懂 Python閉包 裝飾器

2021-10-11 02:16:55 字數 1790 閱讀 8017

參考的資料

舉乙個例子

def

secondflood()

: msg =

"你好"

defthirdflood()

:print

(msg)

secondflood(

)

結果如下:是呼叫不到內嵌在裡面的函式的

使用如下方式:

def

secondflood()

: msg =

"你好"

defthirdflood()

:print

(msg)

return thirdflood #注意不加括號,對應口訣客人空手來

result = secondflood(

)result(

)

解釋一下,secondflood()的結果是得到函式thirdflood

result()是呼叫thirdflood

當然也可以直接result = secondflood()()

接下來再說一下裝飾器,裝飾器的作用就是簡化**,使函式直接使用某些功能。

如果不使用裝飾器

def

secondflood

(func)

: msg =

"程式開始"

defthirdflood()

:print

(msg)

func(

)print

("程式結束"

)return thirdflood #注意不加括號,對應口訣客人空手來

deforigin()

:print

("我是主程式"

)result = secondflood(origin)

result(

)

使用裝飾器
def

secondflood

(func)

: msg =

"程式開始"

defthirdflood()

:print

(msg)

func(

)print

("程式結束"

)return thirdflood #注意不加括號,對應口訣客人空手來

@secondflood

deforigin()

:print

("我是主程式"

)origin(

)

如果主函式帶引數
def

secondflood

(func)

: msg =

"程式開始"

defthirdflood

(arg)

:#有參給上樓,就是最裡面的

print

(msg)

func(arg)

print

("程式結束"

)return thirdflood #注意不加括號,對應口訣客人空手來

@secondflood

deforigin

(info)

:print

(info)

info =

"我是主程式"

origin(info)

只需要在最裡層給乙個形參即

通俗易懂的理解 python 裝飾器

舉例def play print 小王在玩遊戲 sleep 3 print 遊戲結束 我想計算play花費的時間 def play start time.time print 小王在玩遊戲 sleep 3 print 遊戲結束 end time.time print 用時 format end st...

python通俗易懂的閉包

檢視官方解釋,閉包看起來確實不好理解,我通過查資料將閉包做乙個通俗的解釋 閉包是函式裡面再次定義乙個函式,外部的函式暫且稱為外函式,內部的函式暫且稱為內函式。外函式的返回值為內函式和它的環境,它的環境就是外函式的區域性變數 也是內函式的外部變數 當前的值,比如當前變數的值,很多教程裡將閉包的時候會用...

通俗易懂的裝飾器模式

裝飾器模式 decorator pattern 允許向乙個現有的物件新增新的功能,同時又不改變其結構。這種型別的設計模式屬於結構型模式,它是作為現有的類的乙個包裝。這種模式建立了乙個裝飾類,用來包裝原有的類,並在保持類方法簽名完整性的前提下,提供了額外的功能。意圖 動態地給乙個物件新增一些額外的職責...