我的变量是如何变成一个函数的?



大家好。这个问题对一些人来说似乎很愚蠢,但我无法表达问这些概念性问题对我理解编程有多大帮助,因此我想在问题开始时说,我非常感谢你们!!

我的疑问是:变量Twice如何在最后变成一个函数调用,我可以把括号。一个变量如何开始表现为函数?

如果这对某些人来说很明显,我很抱歉,但我希望有人解释一下,因为作为新手,文档术语变得相当复杂。

#Define echo
def echo(n):
"""Return the inner_echo function."""
# Define inner_echo
def inner_echo(word1):
"""Concatenate n copies of word1."""
echo_word = word1 * n
return echo_word
# Return inner_echo
return(inner_echo)
#Call echo: twice        
twice = echo(2)

#Call twice() and print
print(twice('hello'))

echo函数中,您将返回inner_echo,这是指向函数的指针,而不是其返回值。为了返回inner_echo的输出,您需要调用它。

...
# Return inner_echo value
return(inner_echo(word))
...

您返回了嵌套函数对象,因此twice成为inner_echo的函数对象,封装在返回它的环境中。这意味着python保存n变量,该变量不存在于inner_echo中,并且两次成为给定n值的inner_echo函数(在您的示例中为2)。

这在其他语言中是不安全的代码,因为它们不会保存环境变量,但是python会隐式地保存环境变量。

在Python中,变量可以保存数字、字符串、函数、对象,甚至模块。你可以在变量中放入任何东西。

当您执行return(inner_echo)时,inner_echo是一个函数。这就是得到一个函数的方法。如果你做了return(inner_echo(word1)),那么变量twice最终会包含'hellohello',这可能更符合你的期望。

最新更新