Discuss / Python / 看了后面忘了前面。。。

看了后面忘了前面。。。

Topic source
import functools

def log(text):
    if hasattr(text,'__call__'):
        @functools.wraps(text)
        def wrapper(*args, **kw):
            print('begin %s' % text.__name__)
            re = text(*args, **kw)
            print('end %s' % text.__name__)
            return re
        return wrapper
    else:
        def decorator(func):
            @functools.wraps(func)
            def wrapper(*args, **kw):
                print('%s %s():' % (text, func.__name__))
                return func(*args, **kw)
            return wrapper
        return decorator
@log
def now():
    print('now main')

now()

@log('exe')
def now():
    print('now main')

now()

好长啊,有没有大神指点。


  • 1

Reply