Discuss / Python / 同时支持两种

同时支持两种

Topic source

def log(*ar):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kw):
             if ar.__len__() > 0:
                 print(ar[0])
             print( 'begin call %s():' % ( func.__name__))
             func(*args, **kw)
             print('end call %s():' % (func.__name__))
        return wrapper
    return decorator

写的有问题,如果不见() 会报错 ┗( T﹏T )┛

这个可以,参考了其他网友的,在此谢过 。。。


def log(textOrFunc):
    text = textOrFunc if isinstance(textOrFunc, str) else  ''

    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args, **kw):
            print(text)
            print('bengin call %s()' % ( func.__name__))
            func(*args, **kw)
            print('end call %s()' % ( func.__name__))
        return wrapper
    return decorator if isinstance(textOrFunc, str) else decorator(textOrFunc)

  • 1

Reply