python 函数包装不起作用
python function wrapping not working
我在 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)
任何人都可以解释是什么问题。
addOneInside
不需要参数。 myfunc
将可通过上下文访问。
改为
def addOne(myfunc):
def addOneInside():
return myfunc()+1
return addOneInside
这里的术语有点奇怪 - 这不是严格的函数覆盖,它是函数 wrapping。我想你想要的是一个装饰器。 @bytesized 在语法方面是正确的,但还有更多关于您正在尝试的内容需要了解。这是一篇很棒的文章,可能会有所帮助(遍历闭包、局部函数并处理装饰器):http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/
我在 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)
任何人都可以解释是什么问题。
addOneInside
不需要参数。 myfunc
将可通过上下文访问。
改为
def addOne(myfunc):
def addOneInside():
return myfunc()+1
return addOneInside
这里的术语有点奇怪 - 这不是严格的函数覆盖,它是函数 wrapping。我想你想要的是一个装饰器。 @bytesized 在语法方面是正确的,但还有更多关于您正在尝试的内容需要了解。这是一篇很棒的文章,可能会有所帮助(遍历闭包、局部函数并处理装饰器):http://simeonfranklin.com/blog/2012/jul/1/python-decorators-in-12-steps/