1. 程式人生 > >Python全棧學習筆記day 11:裝飾器

Python全棧學習筆記day 11:裝飾器

原則 :開放封閉原則
    開放 : 對擴充套件是開放的
    封閉 : 對修改是封閉的
裝飾器的作用 :在不改變原函式的呼叫方式的情況下,在函式的前後新增功能
裝飾器的本質 : 閉包函式
裝飾器的作用 : 不想修改函式的呼叫方式 但是還想在原來的函式前後新增功能
裝飾器形成的過程 : 1、最簡單的裝飾器
                  2、有返回值的
                  3、有一個引數
                  4、萬能引數

不帶引數的裝飾器:

import time
def timer(func):
    def inner():
        start = time.time()          #被裝飾函式之前做的事情
        func()
        print(time.time() - start)   #被裝飾函式之後做的事情
    return inner

@timer   #==> func1 = timer(func1)  語法糖

def func1():
    print('in func1')


func1()

萬能裝飾器:

def wrapper(func):
    def inner(*args,**kwargs):
        #在被裝飾函式前做的事
        ret = func(*args,**kwargs)
        #在被裝飾函式後做的事
        return ret
    return inner

@wrapper  #holiday = wrapper(holiday)

def holiday(day):
    return day  #被裝飾函式裡的內容
ret = holiday(1)
print(ret)