Python之閉包裝飾器

2021-08-21 05:02:59 字數 880 閱讀 6769

1.什麼是閉包?

多層函式巢狀,(函式裡面還有定義函式,一般是兩個),往往內層函式會用到外層函式的變數,把內層函式以及外部函式的變數當成乙個特殊的物件,這就是閉包。閉包比物件導向更純淨、更輕量,既有資料又有執行資料的**;比普通函式功能更強大,不僅有**還有資料;

2.匿名函式、普通函式、閉包、物件導向的區別?

1). 匿名函式能夠完成基本的簡單功能,傳遞是這個函式的引用 只有功能。

2). 普通函式能夠完成較為複雜的功能,傳遞是這個函式的引用 只有功能。

3). 閉包能夠將較為複雜的功能,傳遞是這個閉包中的函式以及資料。

4). 物件能夠完成最為複雜的功能,傳遞是資料+功能,但占用大量空間,浪費資源。

3.什麼是裝飾器?

利用閉包的基本原理,對乙個目標函式進行裝飾,即在執行乙個目標函式之前、之後執行一些特定的事情。

通用的裝飾器示例如下:

def set_func(func):

print("---開始進行裝飾")

def call_func(*args, **kwargs):

print("---這是目標函式之前做的事情----")  #  如果需要的話

ret = func(*args, ** kwargs)  # 拆包

print("---這是目標函式之後做的事情----")  # 如果需要的話

return ret  # 如果需要有返回值的話可以加上返回值

return call_func

@set_func  # 相當於 test1 = set_func(test1)

def test1(*args, **kwargs):

"""函式內部要做的功能"""

return "ok"  # 如果需要的話,否則就返回none

Python閉包 裝飾器

閉包 legb法則 所謂閉包,就是將組成函式的語句和這些語句的執行環境打包一起時得到的物件 閉包最重要的價值在於封裝上下文環境 下面有個列子來解釋下閉包 列 deffunx x print 開始 deffuny y returnx y print 結束 returnfuny x funx 4 pri...

python 閉包 裝飾器

2.閉包格式 return bar 返回內嵌函式 in test print in 3.使用原理 4.總結 二 裝飾器 2.格式 return test in 閉包函式返回內嵌函式 test aa test aa 裝飾 def aa 這兒如果有引數,test in也必須有一樣的引數,test in中...

閉包 裝飾器

外部函式返回內部函式的引用 內部函式可以直接使用外部函式的環境變數 語法 外部函式通過返回內部函式的引用 內部函式可以直接使用外部函式的 環境變數 自由變數 函式執行時間統計 執行函式前預備處理 執行函式後清理功能 許可權校驗等場景 快取有且只有乙個引數 指向了被裝飾的函式的引用 使用裝飾器 裝飾器...