標籤:-- int 控制 利用 end pytho tar 其他 outer
修飾器可以在不修改目標函數代碼的前提下, 在目標函數執行前後增加一些額外功能
例如有一個簡單的函數
import time
def func1():
print("這是一個簡單的函數")
time.sleep(2)
想給這個函數增加一個計算用時的功能,那麼可以利用修飾器
讓該函數使用修飾器,即在函數的定義的上方添加@函數名,如下,其相當於將func1=outer(func1)寫到後邊的程式中
至於函數外的參數在函數中使用的原因是閉包
import time
def outer(f): def inner(): start = time.time() f() end = time.time() print(end-start) return inner@outer#func1=outer(func1)def func1(): print("這是一個簡單的函數") time.sleep(2)func1()
#輸出
這是一個簡單的函數
2.000551223754883
若是一個有參數的函數需要修飾則
def outer(f): def inner(x,y): start = time.time() f(x,y) end = time.time() print(end-start) return inner@outer#func1=outer(func1)def add(x,y): print(x+y) time.sleep(2)add(1,2)
若想要在修飾器中加一些其他語句如判斷語句來控制某些功能是否使用
import timedef judge(flag=True): def outer(f): def inner(x,y): start = time.time() f(x,y) end = time.time() print(end-start) return inner if flag==True : print("這是一個功能") return outer@judge()#judge()其實相當於outer,除此之外可以在此添加參數def add(x,y): print(x+y) time.sleep(2)add(1,2)
python基礎學習12----修飾器