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 .

你可能感兴趣的:(开发语言类)