首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python:在函数中调用装饰器

Python:在函数中调用装饰器
EN

Stack Overflow用户
提问于 2014-04-05 16:30:59
回答 1查看 3.8K关注 0票数 1

试着去理解装饰师。那么,是否可以通过内联或独立地定义函数来调用函数内部的装饰器?

代码语言:javascript
复制
def deco(f):
    print "In deco"
    def wrp(*args, **kwargs):
        print "In wrp"
        return f(*args, **kwargs)
    return wrp

@deco
def f1():
    print "In f1"

def f2():
    print "In f2"

def f3():
    print "In f3"
    # Calling independent function
    # Error : Invalid syntax error
    @deco
    f2()
    '''
    @deco
        f2()
    Error : IndentationError: unexpected indent
    '''
    print "End f3"

def f4():
    print "In f4"
    # Making function inline
    @deco
    def f5():
        print "In f5"
    '''
    Error : NameError: global name 'deco' is not defined
    '''
    print "End f4"

此外,对f4()中的错误进行解释也很有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-05 16:54:01

我不太清楚你想在这里做什么。@只是将一个函数包装在另一个函数中的语法糖:所以在定义f1之前的@deco与后来的f1 = deco(f1)完全相同。

因此,在另一个函数中“使用”装饰器是没有意义的。如果你真的愿意,你可以这样做:

代码语言:javascript
复制
deco(f2)()

呃,创建包装,然后调用它,但我不知道你为什么要这样做。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22883604

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档