代码改变世界

装饰器2:函数参数为1个、多个、列表、字典时如何装饰

2018-04-17 16:42  今天我要学习  阅读(326)  评论(0)    收藏  举报

#coding=utf-8

#定义装饰器,带不固定参数

import time

def decorator2(fun):

    def fun1(*args,**kwargs):

        s_time = time.time()

        fun(*args,**kwargs)

        e_time = time.time()

        c_time = int(e_time - s_time)

        print '该函数的运行时间:%s秒'%c_time

    return fun1

#被装饰的函数

#无参数

@decorator2

def test1():

    time.sleep(1)

    print '无参的test1:'

#一个参数

@decorator2

def test2(name):

    time.sleep(1)

    print '参数是:',name

    print '一个参数的test2:'

#列表参数

@decorator2

def test3(list1):

    time.sleep(1)

    print '列表是:', list1

    print '一个参数的test2:'

#字典参数

@decorator2

def test4(dic1):

    time.sleep(1)

    print '字典是:', dic1

    print '一个参数的test2:

'#多个参数

@decorator2

def test5(name,age,color):

    time.sleep(1)

    print '参数是:', name,age,color

    print '多个参数的test3:'

test1()

test2('君浩')

test3([1,2,3,4,5])

test4({'a':1})

test5('junhao',1,'good')

结果:

无参的test1:

该函数的运行时间:1秒

参数是: 君浩

一个参数的test2:

该函数的运行时间:1秒

列表是: [1, 2, 3, 4, 5]

一个参数的test2:

该函数的运行时间:1秒

字典是: {'a': 1}

一个参数的test2:

该函数的运行时间:1秒

参数是: junhao 1 good

多个参数的test3:

该函数的运行时间:1秒