能否写出一个@log的decorator,使它既支持:@log()又支持@log('execute')

题目:能否写出一个@log的decorator,使它既支持:@log()又支持@log('execute')

'''

能否写出一个@log的decorator,使它既支持:@log()又支持@log('execute')

import functools
def log(*text):
    def decorator(func):
        @functools.wraps(func)
        def wrapper(*args,**kw):
            print(func.__name__,' begin ' ,*text)
            func(*args,**kw)
            print(func.__name__,' end ',*text)
            
        return wrapper
    return decorator

@log('execute')  #or@log()
def foo():
    print('foo is running...')
if __name__=='__main__':
    f=foo
    f()

'''

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 30岁以前,人生的阶段决定我们总有很多非分的想法,眼高手低的幻想,寂寞无聊的情欲,急功近利的野心。30岁以后,经历...
    沧海沉浮阅读 188评论 0 1
  • (之一) 儿子小时候,陪我开会,书记镇长坐主席台,其他人尽量往后坐。他指着主席台问:妈,他们啷么要坐高头?我:他们...
    王有财有财阅读 371评论 2 2