我想为此提供一个示例代码:
def coun(n):
count = 0
def counter():
nonlocal count
if count < n:
count += 1
return count
return counter
cntrl = coun(4)
print(cntrl())
为什么我们必须将函数分配给标识符,在print语句中更多,使用括号调用cntrl,并且在函数coun的return语句中,不使用括号返回计数器。这是什么?(我只是python的新手)
答案 0 :(得分:1)
将函数分配给标识符并不需要调用它们。
考虑简单的例子:
def function_factory():
def f(x):
return x
return f
您可以将从工厂返回的函数分配给标识符,并将其用作任何其他命名函数:
my_f = function_factory()
assert my_f(1) == 1
或者你可以放弃中间作业并在一行中完成:
assert function_factory()(1) == 1
答案 1 :(得分:0)
不是
因为您正在执行return counter
而不是return counter()
,所以您返回的是函数而不是该函数的结果,为了获得结果,您需要调用此函数。您可以通过将其分配给变量来执行此操作,也可以使用通常的函数调用约定立即调用它:
print(coun(4)())