【发布时间】:2019-03-12 14:23:05
【问题描述】:
我目前正在研究 Head First Python,并开始着手定义函数。下面这个程序的目标是创建一个函数 print_lol() ,它接受一个参数:要在屏幕上显示的列表。最终生效的代码如下:
def print_lol(the_list):
for each_item in the_list:
if isinstance(each_item,list):
print_lol(each_item)
else:
print(each_item)
因此,如果我们输入如下列表:
movies=["The Holy Grail", 1975, "Terry Jones & Terry Gilliam", 91, ["Graham Chapman", ["Michael Palin", "John Cleese", "Terr Gilliam", "Eric Idle", "Terry Jones"]]]
只会输出这个数组中的所有条目。
我的问题是,为什么第四行中的 print_lol(each_item) 有效?我知道逻辑是程序将查看每个项目,如果它不在列表中,它只会打印该项目,但如果它是计算机如何知道 print_lol 是什么?我认为第一行也不能充分解释 print_lol。 print_lol 是 Python 3 自带的命令吗?
【问题讨论】:
-
在编程中搜索递归函数的定义(它是一个调用自己的函数)
-
当一个脚本首先被执行时,
def和后面是一个定义(但不执行)函数的命令。然后在全局命名空间中输入名称为print_lol的函数。稍后调用该函数时,该定义是现成的。
标签: python python-3.x