为什么在调用函数时将函数分配给必需的标识符?

时间:2016-05-19 12:45:26

标签: python function python-3.x

我想为此提供一个示例代码:

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的新手)

2 个答案:

答案 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)())