閉包:乙個函式中巢狀另外乙個函式的定義 且內部的函式會用到外部函式的變數
def line(k,b):
def create_y(x):
print(k*x+b)
return create_y
myline = line(1,2)
myline(1)
myline(2)
myline = line(11,22)
myline(1)
myline(2)
閉包和物件導向:閉包占用空間少,相當於物件導向的建立的例項物件
裝飾器/修飾器:在不改變原函式**的情況下 對原函式的功能做修改
def set_func(func):
def call_func():
print("測試資料1")
func()
print("測試資料2")
return call_func
@set_func # 等價於 test1 = set_func(test1)
def test1():
print("---------test1-----------")
test1()
閉包 裝飾器
外部函式返回內部函式的引用 內部函式可以直接使用外部函式的環境變數 語法 外部函式通過返回內部函式的引用 內部函式可以直接使用外部函式的 環境變數 自由變數 函式執行時間統計 執行函式前預備處理 執行函式後清理功能 許可權校驗等場景 快取有且只有乙個引數 指向了被裝飾的函式的引用 使用裝飾器 裝飾器...
閉包,裝飾器
多層函式巢狀,函式裡面還有定義函式,一般是兩個 往往內層函式會用到外層函式的變數,把內層函式以及外部函式的變數當成乙個特殊的物件,這就是閉包。閉包比物件導向更純淨 更輕量,既有資料又有執行資料的 比普通函式功能更強大,不僅有 還有資料 利用閉包的基本原理,對乙個目標函式進行裝飾,即在執行乙個目標函式...
閉包 裝飾器
定義乙個函式 def test number 在函式內部再定義乙個函式,並且這個函式用到了外邊函式的變數,那麼將這個函式及用到的一些變數稱之為閉包 def test in number in print in text in 函式,number in is d number in return nu...