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

main(10)

它不打印“ran”,删除“yield i”可以修复它,但是我该如何正确格式化呢?lynda.com 电影中 python3 的示例是相同的,3.3 和 3.1 之间是否存在语法差异?

4

1 回答 1

0

yield是一个神奇的关键字,它把函数变成一个生成器。这意味着它实际上已在该yield i行暂停,并且您将能够在main您使用该值时恢复执行。

尝试将最后一行替换为

it=main(10)
next(it) # = 5
next(it) # prints "ran", then raises StopIteration
于 2013-09-30T22:52:13.787 回答