python函数包装不工作

2024-10-03 09:18:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我在https://www.youtube.com上得到了函数包装的示例,但它引发了异常。你知道吗

def addOne(myfunc):

    def addOneInside(myfunc):       
        return myfunc()+1

    return addOneInside

def oldFunc():

    return 3

oldFunc=addOne(oldFunc)

print oldFunc()

错误是:

TypeError: addOneInside() takes exactly 1 argument (0 given)

任何人都能解释问题所在。你知道吗


Tags: 函数httpscom示例returnyoutubedefwww
2条回答

addOneInside不需要参数。myfunc可以通过上下文访问。你知道吗

把它改成

def addOne(myfunc):
    def addOneInside():       
        return myfunc()+1
    return addOneInside

这里的术语有点奇怪-这不是严格的函数重写,而是函数包装。我想你想要的是一个装饰师。@bytesized在语法上是正确的,但是关于您正在尝试的内容还有很多需要学习的地方。下面是一篇很有帮助的文章(遍历闭包、局部函数和修饰符):http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/

相关问题 更多 >