首页 > 解决方案 > 关于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 附带的命令吗?

标签: pythonpython-3.x

解决方案


您在第 1 行声明一个您选择调用的函数print_lol,并在第 4 行从其内部递归调用它。print_lol不是python中的命令,它实际上是您在提供的代码中声明的函数。

非常简化,将函数想象为print_lol它为每个递归调用移除一层列表,直到它不再是列表,而只剩下字符串。然后它打印这些字符串。


推荐阅读