Discuss / Python / 关于@log和@log(‘’)

关于@log和@log(‘’)

Topic source

站在巨人们的肩膀上,终于出了第二题

def log(text):
    if isinstance(text,str):
        def decorator(func):
            @functools.wraps(func)
            def wrapper1(*args,**kwargs):
                print('%s call method: %s' % (text, func.__name__))
                return func(*args,**kwargs)
            return wrapper1
        return decorator
    else:
        @functools.wraps(text)
        def wrapper2(*args, **kw):
            print('call method: %s' %text.__name__)
            return text(*args, **kw)
        return wrapper2


timenow = time.asctime()
@log(timenow)
def add(x,y):
     print('x + y = %d' %(x+y))
add(2,4)
print(add.__name__)

@log
def add(x, y):
    print('x + y = %d' % (x + y))
add(2, 4)
print(add.__name__)

  • 1

Reply