为什么这个python 3.3代码不能和yield一起使用?

时间:2013-09-30 22:42:06

标签: yield python-3.3

def main(i):
    while i > 0:
        if i == 5: yield i
        i -= 1
    print("ran")

main(10)

它不打印“运行”,删除“yield i”修复它但是我如何正确格式化呢? lynda.com电影中python3的例子是一样的,3.3和3.1之间是否有语法差异?

1 个答案:

答案 0 :(得分:0)

yield是一个神奇的关键字,可将函数转换为生成器。这意味着它实际上已暂停在yield i行,并且当您使用该值时,您将能够在main中继续执行。

尝试用

替换最后一行
it=main(10)
next(it) # = 5
next(it) # prints "ran", then raises StopIteration