Discuss / Python / 俩问题写到一个答案里

俩问题写到一个答案里

Topic source
import functools
def log(textOrFun):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kw):
            if isinstance(textOrFun, str):
                print('%s begin call %s():' % (textOrFun, func.__name__))
            else:
                print('begin call %s():' %func.__name__)
            func(*args, **kw)
            print('end call %s' %func.__name__)
            return
        return wrapper
    if isinstance(textOrFun, str):
        return decorator
    else:
        return decorator(textOrFun)

@log('test')
def now():
    print('2015-06-12')

now()

请教定义里最后一步何解? else: return decorator(textOrFun)

taogebuaa

#3 Created at ... [Delete] [Delete and Lock User]

最后一步相当于把textOrFun作为函数名穿进去


  • 1

Reply