在下面的代码中,print(first)
返回first_child
函数的地址,这对我来说很有意义,因为parent()
函数返回对first_child
的引用,而不是{{ 1}}函数本身-即first_child
返回parent()
而不返回first_child
。
由于返回了对first_child()
函数的引用,而不是函数本身,我不明白为什么first_child
实际上返回first_child函数的输出-显示“嗨,我是爱玛” 。为什么/如何以这种方式调用print(first())
函数?
first_child()
答案 0 :(得分:2)
您首先需要了解:在Python中,函数是一等公民。它们可以并且确实像普通变量一样工作。
忘记所有有关C或Java函数的信息。将python函数视为只是另一个变量-除了可以调用它外-即f()
对于f
变量是有意义的。
现在让我们回到您的问题,parent
返回first_child
或second_child
-这些就像变量。现在,当您使用这些变量之一并将()
放在它们之后时,将调用该变量。此调用最终将评估您在parent
中定义的字符串-因此,您得到“嗨,我是艾玛”
您必须了解python中的“对函数的引用”与“函数本身”一样好。
如果您需要更多详细信息,请查看:https://medium.com/python-pandemonium/function-as-objects-in-python-d5215e6d1b0d