1. 程式人生 > >裝飾器2(被裝飾函數自帶參數)

裝飾器2(被裝飾函數自帶參數)

執行 rgs 內存 /usr func lee def start utf-8

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import time

def wrapper(func):
    def deco(*args,**kwargs):#deco接收參數"sunwei"和24
        start = time.time()
        func(*args,**kwargs)#執行此句時,相當於test1("sunwei",24)
        stop = time.time()
        print("the func run %s"%(stop - start))
    return deco

#這裏的【@wrapper】等於【test1 = wrapper(test1)】,wrapper(test1),將test1函數以實參的形式傳遞給wrapper函數,wrapper函數將會把deco函數的內存地址作為返回值返回給變量test1,而此時test1變量所指引的值相當於是deco函數的內存地址,如果test1()則將會執行deco函數 @wrapper def test1(name,age): time.sleep(3) print("in the test1...") print("---->%s:%s"%(name,age)) #下面語句相當於deco("sunwei",24)
test1("sunwei",24)

裝飾器2(被裝飾函數自帶參數)