1. 程式人生 > >Python中裝飾器的用法

Python中裝飾器的用法

pla 復制 bsp 函數名 知識點 高階函數 opened play func

  1. 定義:
    1. 裝飾器本身就是一個函數
    2. 為其他函數提供附加功能
      1. 不改變源代碼
      2. 不改變原調用方式
    3. 裝飾器=高階函數+嵌套函數
  2. 知識點:
    1. 函數本身就是一個變量(意味著可以被復制給一個變量:test=test(1) )
    2. 高階函數
      1. 把函數名當成一個實參傳遞給另一個函數func(test1) (不改變源代碼的前提下添加代碼)
      2. 返回值中包含函數名return deco (不改變函數的調用方式)
    3. 嵌套函數:函數中加入新的函數def func1(): def func2():
  3. 典型結構:   
技術分享
1 def func1(test):
2     def deco():
3         #progress
4 return deco#返回函數的地址,達到不改變調用方式的目的
View Code

完整程序:

技術分享
# __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))
return func @timer def test1(): time.sleep(1) print("this is test1") @timer def test2(): time.sleep(1) print("this is test2") test1() test2()
View Code

Python中裝飾器的用法