内部函数的返回地址与返回函数

2024-06-16 11:50:00 发布

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

在下面的代码中,print(first)返回first_child函数的地址,这对我来说很有意义,因为parent()函数返回对first_child的引用,而不是first_child函数本身,也就是说parent()返回first_child,而不是first_child()

由于返回的是对first_child函数的引用,而不是函数本身,我不明白为什么print(first())实际返回第一个子函数的输出,即显示“Hi,i am Emma”。为什么/怎么可能以这种方式调用first_child()函数

def parent(num):
    def first_child():
        return "Hi, I am Emma"

    def second_child():
        return "Call me Liam"

    if num == 1:
        return first_child
    else:
        return second_child


first = parent(1)
second = parent(2)

print(first)
print(first())

Tags: 函数代码childreturn地址defhiam
1条回答
网友
1楼 · 发布于 2024-06-16 11:50:00

您首先需要了解:在Python中,函数是一等公民。它们可以——而且确实——表现得像正常变量

忘记所有的C或Java函数。将python函数视为另一个变量—除了可以调用它之外—即f()对于f变量是有意义的

现在让我们回到你的问题,parent返回first_childsecond_child-这些都像变量。现在,当您选取其中一个变量并将()放在它们之后时,将调用该变量。这个调用的结果是对您在parent中定义的字符串求值,因此您会得到“Hi I am Emma”

您必须理解“对函数的引用”和python中的“函数本身”一样好

如果你想了解更多血淋淋的细节,请查看:https://medium.com/python-pandemonium/function-as-objects-in-python-d5215e6d1b0d

相关问题 更多 >