我正在分析以下代码示例:
>>> def check(v):
... for t in v:
... yield t
... if t==2:
... yield "a"
我是否正确理解最后两行代码永远不会被执行,因为yield
的作用是return
。因此,基本上for循环中的第一个yield
(在if子句之前)将始终应用。
我的理解是否正确?
更新
我不明白为什么我得到序列2,a,2,a,1,......而不是这一个:1,a,1,......
>>> my_list = [2,2,1,2,3]
>>> f = check(my_list)
>>> f.next()
2
>>> f.next()
'a'
>>> f.next()
2
>>> f.next()
'a'
>>> f.next()
1
>>> f.next()
2