大家好。这个问题对一些人来说似乎很愚蠢,但我无法表达问这些概念性问题对我理解编程有多大帮助,因此我想在问题开始时说,我非常感谢你们!!
我的疑问是:变量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',这可能更符合你的期望。