玩蛇网提供最新Python编程技术信息以及Python资源下载!
您现在的位置: 玩蛇网首页 > Python问题解答 > 正文内容

Python装饰器怎么样既支持 @deco 也支持 @deco(p) 调用?

def deco(*args):
    def _deco(func):
        def __deco():
            print("before %s called [%s]." % (func.__name__, args))
            func()
            print("  after %s called [%s]." % (func.__name__, args))
        return __deco
    return _deco

@deco("mymodule")  # 可用
def myfunc():
    print(" myfunc() called.")

@deco()   # 也可用
def myfunc2():
    print(" myfunc2() called.")

@deco   # 报错 TypeError: _deco() takes exactly 1 argument
def myfunc3():
    print(" myfunc2() called.")

myfunc()
myfunc2()
myfunc3()

玩蛇网文章,转载请注明出处和文章网址:http://www.iplaypy.com/wenda/wd19190.html

相关文章 Recommend

玩蛇网Python互助QQ群,欢迎加入-->: 106381465 玩蛇网Python新手群
修订日期:2018年03月05日 - 10时40分08秒 发布自玩蛇网

我要分享到:

必知PYTHON教程 Must Know PYTHON Tutorials

必知PYTHON模块 Must Know PYTHON Modules