让some_generator_func()成为函数:
def some_generator_fun():
yield 1
yield 2
为什么会这样?
>>>>next(some_generator_func())
1
>>>>next(some_generator_func())
1
,而
>>>>a_var = some_generator_func()
>>>>next(a_var)
1
>>>>next(a_var)
2
答案 0 :(得分:0)
在第一种情况下,每次调用函数时都会创建一个 new 生成器表达式。这意味着您将创建一个全新的生成器,然后调用next
,这将有效地每次调用第一个元素。
当您将其分配给变量时,每次调用next
时都会从该生成器中产生元素。
答案 1 :(得分:0)
调用some_generator_func
从函数顶部开始创建一个新的迭代器。因此,在第一种情况下,您迭代两个新的迭代器;在后一种情况下,您迭代相同的迭代器两次。