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

2024-05-23 17:41:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我想举一个代码示例:

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


Tags: 函数代码示例returnifdefcountcounter
2条回答

不是

因为您执行的是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

相关问题 更多 >