python - 关于Python中定义函数的问题
问题描述
我目前正在使用 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 附带的命令吗?
解决方案
您在第 1 行声明一个您选择调用的函数print_lol
,并在第 4 行从其内部递归调用它。print_lol
不是python中的命令,它实际上是您在提供的代码中声明的函数。
非常简化,将函数想象为print_lol
它为每个递归调用移除一层列表,直到它不再是列表,而只剩下字符串。然后它打印这些字符串。
推荐阅读
- c - C 按值传递数组与按引用传递数组
- matlab - 如何在 MATLAB 中围绕所有轴旋转网格矩阵?
- java - Maven在生成时复制jar根目录下的文件夹内容
- jquery - 在 Django 应用程序中通过 Ajax 进行简单的数据库插入和删除
- excel - 在图表 application.caller 中选择图表和形状
- python - 字符串比较逻辑 Python
- android - 在 Android 应用程序的屏幕上移动 Textview
- javascript - 从ajax调用在后台执行一个php页面
- css - 在移动设备上按列修改 Woocommerce 产品
- layer - GIMP 中的水印脚本