圆括号用于运行函数,但没有它们,名称仍像变量一样引用该函数。
return myFunc() + 1
这将评估myFunc
函数,为其值加1,然后返回该值。括号是为了让函数运行并返回一个数值所需要的。
return addOneInside
这是不实际运行addOneInside
,它仅仅是返回函数的变量。您可以将其分配给其他名称并存储以备后用。你理论上可以这样做:
plusOne = addOneInside
plusOne()
它实际上会调用addOneInside
函数。
您最初的问题中的特定实例被称为装饰器,它是您对传递给您的函数的参数执行代码的一种方式。你的例子不是很实用,但我可以修改它以显示一个简单的用例。
假设您只想将正数传递给您的函数。如果myFunc
传递的是负数,则需要将其更改为0.可以使用像这样的装饰器来管理它。
def addOne(myFunc):
def addOneInside(num):
if num < 0:
num = 0
return myFunc(num)
return addOneInside # <-----here is the question
@addOne
def oldFunc(number):
return number
为了解释,该@addOne
是修饰语法,它的连接上参数/ S的,只要你把它oldFunc
被称为addOneInside
功能。所以,现在这里的一些示例输出:
oldFunc(-12)
>>> 0
oldFunc(12)
>>> 12
所以,现在你可以添加逻辑来oldFunc
是独立操作参数的分析逻辑的。你也可以相对容易地改变允许的参数。也许还有一个最大上限,或者你希望它记录或注意到该值不应该是负值。您也可以将这个装饰器应用于多个功能,并且它们将在所有这些功能上执行相同的操作。
This blogpost为我解释了很多,所以如果这个信息太简单了就不清楚了,请尝试阅读那里的详细解释。
压痕。 Python使用它来确定函数的开始和结束。在addOne函数内添加一级缩进。 – bsa
哪个版本的python?什么是确切的语法错误? – ReyCharles
您必须真正向我们展示Python向您展示的确切错误。正如我所看到的,对于Python 2.7来说,一切都应该正常工作,但是我们需要知道Ptyhon版本的错误行和错误消息。谢谢 – madtyn