*args,**kwargs
命名空間與作用域:命名空間的「巢狀」是在函式定義階段,即檢測語法的時候確定的
函式物件:
函式的巢狀定義
閉包函式
傳遞函式的方式
通過引數的形式為函式傳值
通過閉包的方式為函式傳值
什麼是裝飾器
為何要用裝飾器
需求:在不修改index函式源**以及呼叫方式的情況下為其新增統計時間的功能
def index(x,y):方案一:直接在index函式內加統計時間的**time.sleep(3)
print('index %s %s'%(x,y))
index(111,222)
index(111,y=222)
index(x=111,y=222)
import time問題:沒有修改**的呼叫方式,但是修改了源**,方案一失敗def index(x,y):
start = time.time()
time.sleep(3)
print('index %s %s'%(x,y))
stop = time.time()
print(stop-start)
index(111,333)
方案二:在函式呼叫的時候新增統計時間的**
def index(x,y):問題:沒有修改index的源**,也沒有修改呼叫方式,並且加上了新功能,但是**冗餘。方案二失敗time.sleep(3)
print('index %s %s'%(x,y))
start = time.time()
index(111,222)
stop = time.time()
print(stop-start)
start = time.time()
index(333,444)
stop = time.time()
print(stop-start)
start = time.time()
index(555,666)
stop = time.time()
print(stop-start)
方案三:將方案二中冗餘的**部分寫成函式
問題:解決了**冗餘問題,但是函式的呼叫方式發生改變。方案三失敗
方案三優化一:將index的引數寫活
方案三優化二:在優化一的基礎上把被裝飾的物件寫活,原來只能裝飾index
python裝飾器講解筆記
公共 判斷乙個數是否是質數def is prime num if num 2 return false elif num 2 return true else for i in range 2 num if num i 0 return false return true1 不帶有裝飾器def pr...
python裝飾器 閉包 垃圾講解
第一部分裝飾器,接觸很久,沒理會原理。慚愧。第二部分裝飾器傳參的小實踐。第三部分閉包的理解,如果有錯誤,留著,以後再說。其本意就是在不改變原函式的基礎上,對函式新增功能。用途呢,aop思想,你說是吧。乙個自己寫裝飾器的例子 定義裝飾器 這種寫法比較適合簡單的包裹,只是會把real func前面 裹住...
舉例講解python裝飾器的使用
需求 領導想知道,該測試用例執行,用例的執行時間是多少,我們怎麼實現該 如下 想要實現下面用例的執行時間是多少,怎麼做?def creat oder 這個是原 一條測試用例 print 執行測試用例 time.sleep 1 你可能會想到,記錄開始時間,結束時間,然後計算差就行了唄,好,那我們來看看...