Python中裝飾器的用法
阿新 • • 發佈:2017-08-19
pla 復制 bsp 函數名 知識點 高階函數 opened play func
- 定義:
- 裝飾器本身就是一個函數
- 為其他函數提供附加功能
- 不改變源代碼
- 不改變原調用方式
- 裝飾器=高階函數+嵌套函數
- 知識點:
- 函數本身就是一個變量(意味著可以被復制給一個變量:test=test(1) )
- 高階函數
- 把函數名當成一個實參傳遞給另一個函數func(test1) (不改變源代碼的前提下添加代碼)
- 返回值中包含函數名return deco (不改變函數的調用方式)
- 嵌套函數:函數中加入新的函數def func1(): def func2():
- 典型結構:
1 def func1(test): 2 def deco(): 3 #progressView Code4 return deco#返回函數的地址,達到不改變調用方式的目的
完整程序:
# __Author__Panda-J____ import time def timer(func): # for test1 & 2 start_time = time.time() func() # run func and test its running time end_time = time.time() print("this func running time is %s" % (end_time - start_time))View Codereturn func @timer def test1(): time.sleep(1) print("this is test1") @timer def test2(): time.sleep(1) print("this is test2") test1() test2()
Python中裝飾器的用法