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