2024-05-23 17:41:57 发布
网友
我想举一个代码示例:
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的新手)
不是
因为您执行的是return counter而不是return counter(),所以您返回的是一个函数而不是该函数的结果,为了得到结果,您需要调用此函数。您可以通过将其赋给变量来实现这一点,也可以使用通常的函数调用约定立即调用它:
return counter
return counter()
print(coun(4)())
将函数分配给标识符并不需要调用它们。你知道吗
举个简单的例子:
def function_factory(): def f(x): return x return f
您可以将从工厂返回的函数分配给标识符,并将其用作任何其他命名函数:
my_f = function_factory() assert my_f(1) == 1
或者您可以删除中间赋值并在一行中执行:
assert function_factory()(1) == 1
不是
因为您执行的是
return counter
而不是return counter()
,所以您返回的是一个函数而不是该函数的结果,为了得到结果,您需要调用此函数。您可以通过将其赋给变量来实现这一点,也可以使用通常的函数调用约定立即调用它:将函数分配给标识符并不需要调用它们。你知道吗
举个简单的例子:
您可以将从工厂返回的函数分配给标识符,并将其用作任何其他命名函数:
或者您可以删除中间赋值并在一行中执行:
相关问题 更多 >
编程相关推荐