【1.51】装饰器--3返回值、传入参数

上面实现的是装饰器 

但是没有返回值

import time
def test(func):
    def wappy():
        start = time.time()
        func()                    #加一个括号就直接运行func
        stop = time.time()
        print ("函数运行时间:%s"%(stop-start))
    return wappy

@test
def foo():
    time.sleep(0.1)
    print("hello foo")
foo()

#但是函数 foo 没有返回值,增加返回值

import time
def test(func):
    def wappy():
        start = time.time()
        result=func()                    #加一个括号就直接运行func
        stop = time.time()
        print ("函数运行时间:%s"%(stop-start))
        return result                         #就增加了返回值
    return wappy 

@test
def foo():
    time.sleep(0.1)
    res = "我是被修饰函数的返回值"
    print("hello foo")
    return  res
print(foo())

#这样就增加了返回值 

 

 

 

看看传入参数:

import time
def test(func):
    def wappy(*args,**kwargs):          #不能把未知参数写死,就要灵活的写为* 和 ** ,接受任意长度参数
        start = time.time()
        result=func(*args,**kwargs)                    #加一个括号就直接运行func
        stop = time.time()
        print ("函数运行时间:%s"%(stop-start))
        return result                         #就增加了返回值
    return wappy

@test
def foo(num,name,age,sex):
    time.sleep(0.1)
    res = "我是被修饰函数的返回值"
    print("hello foo")
    print (num,name,age,sex)
    return  res
print(foo(1,"yaoming",age=18,sex="male"))

#这里就传入参数和增加了返回值

 

posted @ 2016-04-15 22:38  科学小怪癖  阅读(99)  评论(0)    收藏  举报