yield
表达式文档: Yield expressions
yield
表达式的作用有点像 return
, 但是又有些不同.
相同的是执行到它就会返回, 不同的是 return
不会再回来; yield
还会回来. 举个栗子:
1 | def p(): |
输出为:
1 | start 0 |
可以看到,第一次执行到 yield
就返回了; 第二次则是先执行 yield
后面的,然后循环到 yield
再返回, 重要的是它还记得你上次返回时的状态(例如 i
的值), 而 return
就不会.
yield from
表达式文档: yield from
举个栗子:
1 | def g(x): |
输出为:
1 | this first yield from |
yield from
后面是迭代器, 并且 yield
完这个迭代器, 才会去执行第二个 yield from
.