谢谢你读我的问题。由于我对Python还不熟悉,我想问一下Python中的()的情况。在
def addOne(myFunc):
def addOneInside():
return myFunc() + 1
return addOneInside # <-----here is the question
@addOne
def oldFunc():
return 3
print oldFunc()
请注意,在第四行,虽然程序返回一个函数,但它不需要括号()。为什么它没有出现语法错误的错误呢?非常感谢您事先的回答!在
Tags:
圆括号是用来运行函数的,但是没有它们,名称仍然像变量一样引用函数。在
这将计算
^{pr2}$myFunc
函数,将1加到它的值上,然后返回该值。为了使函数运行并返回一个数值,需要括号。在这实际上并不是在运行
addOneInside
,它只是将函数作为变量返回。您可以将其指定给另一个名称,并将其存储以供以后使用。理论上你可以这样做:它实际上会调用
addOneInside
函数。在初始问题中的特定实例称为Decorator,它是一种对传递给函数的参数执行代码的方法。您的示例不太实用,但我可以修改它以显示一个简单的用例。在
假设您只希望将正数传递给函数。如果传递给
myFunc
一个负数,则需要将其更改为0。你可以用这样的装饰工来处理。在为了解释,}的参数时调用它。下面是一些输出示例:
@addOne
是装饰语法,它附加了addOneInside
函数,以便在调用{所以现在可以向
oldFunc
添加独立于参数解析逻辑的逻辑。您还可以相对容易地更改允许的参数。可能还有一个要达到的最大上限,或者您希望它记录下来,或者注意该值不应为负。您还可以将这个decorator应用于多个函数,它将对所有函数执行相同的操作。在This blogpost为我解释了很多,所以如果这些信息太简短而不清楚,请尝试阅读那里的详细解释。在
您在函数
addOne()
中的缩进不正确(我已经修复了),但我不认为这是您的问题。在如果您使用的是Python3,那么
print
是一个函数,必须这样调用:相关问题 更多 >
编程相关推荐