Python 函数修饰符(装饰器)的学习

#Python 函数修饰符(装饰器)的学习

import time

class Test:
    def __init__(self):
        self.name=''
        self.functionDict = {}
    def msg_register(self, msgType,
            isFriendChat=False, isGroupChat=False, isMpChat=False):
        def _msg_register(fn):
            print 'call fn'
            self.functionDict[msgType] = fn
        return _msg_register


    def do(self,msgType):
        self.functionDict[msgType]('abc',self.name)


    def timeslong(self,func):
        def call():
            start = time.clock()
            print("It's time starting ! ")
            func()
            print("It's time ending ! ")
            end = time.clock()
            return "It's used : %s ." % (end - start)
        return call


a =  Test()
a.name='111'


@a.msg_register('First')
def test(msg,tt):
    print 'msg=',msg
    print tt

a.do('First')

a.name='222'
def testImg(msg,tt):
    print 'msg=',msg
    print tt

a.functionDict['Second'] = testImg
a.do('Second')

@a.timeslong
def f():
    y = 0
    for i in range(10):
        y = y + i + 1
        print(y)
    return y


print(f())

运行结果:

call fn
msg= abc
111
msg= abc
222
It's time starting ! 
1
3
6
10
15
21
28
36
45
55
It's time ending ! 
It's used : 0.0278254513276 .
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值