PHP前端开发

为什么在 Python 代码中,`print(list(g))` 后无法再执行 `print(i)`?

百变鹏仔 4天前 #Python
文章标签 代码

去掉 print(list(g)) 后才能执行 print(i) 的原因

在给出的 python 代码中,定义了以下两个函数:

def y(list):    for i in list:        yield idef exec(g):    print(list(g))  # 1    for i in g:     # 2        print(i)

同时,还创建了一个元组 t,然后将 t 传递给 y 函数,并将结果赋值给迭代器 g。最后,调用 exec 函数,传入 g 作为参数。

当不调用 print(list(g)) 时,i 循环将正常执行,并打印元组 t 中的元素。这是因为迭代器 g 尚未被遍历。

立即学习“Python免费学习笔记(深入)”;

然而,当调用 print(list(g)) 时,它会将迭代器 g 遍历一次,并将其转换成一个列表。这意味着当 i 循环开始执行时,迭代器 g 已经没有元素可供迭代了。这就是 print(i) 无法执行的原因,因为它找不到它正在寻找的元素。

总之,只有当 print(list(g)) 被调用时,print(i) 才会失败,因为这会消耗掉迭代器 g 中的所有元素,导致 i 循环没有元素可供迭代。