【发布时间】:2014-12-24 18:46:55
【问题描述】:
看看代码:
def main():
for p in test1(): print(p)
def test1():
s = set()
s.update(range(5))
for p in s: yield p
return s
为什么我只有 0,1,2,3,4?输出应该是:0,1,2,3,4 两次(1 代表'yield',1 代表'return')
PS:Python-3.4
【问题讨论】:
-
你的问题的主要部分是在代码中,因为它偏向一边是不可见的。
-
你明白
for上的else是做什么的吗?在the docs 中有解释。 -
在您完成生成其中的所有元素之后,您还可以在第一个函数中生成实际集合。你需要明白 return 永远不会被执行,即使是,也永远不会被使用
-
不知道可以将
else子句放在for循环中。找到了一个关于它的nice blog post。 -
@Neft 另一个我经常忘记的模式是
try/except/else,其中else子句只有在没有异常的情况下才会执行。