1. 程式人生 > >python---裝飾器

python---裝飾器

等等 value success star invalid user wrap net ces

python裝飾器要點:

1. 裝飾器能夠給被裝飾的函數在不改變調用方式的情況下,增加功能,如日誌,計時等等

2. 被裝飾函數包含有不帶參數的,帶參數的

3. 裝飾器本身也分為不帶參數和帶參數的

 1 import time
 2 def deco(func):
 3     def wraper(*args):
 4         start_time = time.time()
 5         func(*args)
 6         stop_time = time.time()
 7         print("running time is:",stop_time - start_time)
8 return wraper 9 10 @deco #等於test1 = deco(test1) 返回值為wraper的內存地址,即test1等於wraper,所有*args同樣可以傳遞給wraper 11 def test1(*args): 12 print("test1".center(30,"-")) 13 print("values is",*args) 14 test1(1,2,3) 15 16 17 user = "jack" 18 def auth(auth_type): 19 def outer_wraper(func): 20
def wraper(*args,**kwargs): 21 if auth_type=="local": 22 username = input("username:").strip() 23 if user == username: 24 print("success!") 25 res = func() 26 return res 27 else
: 28 print("invalid input") 29 return wraper 30 return outer_wraper 31 32 @auth(auth_type="local") #即這裏多了一個參數,這個參數需要傳遞給auth函數,多了這個參數可以再裝飾器內加判斷 33 def home(): 34 print("home page") 35 36 home()

擴展閱讀
http://blog.csdn.net/thy38/article/details/4471421

python---裝飾器