" line =(yield)"工作?

时间:2016-05-28 19:45:41

标签: python python-2.7 generator yield

当我看到这段代码时,我正在阅读Python教科书:

def print_matches(matchtext):
    print "Searching for", matchtext
    while True:
        line = (yield) 
    if matchtext in line:
        print line

matcher = print_matches("python")
matcher.next()
matcher.send("Hello World")
matcher.send("python is cool") # prints "python is cool"
matcher.send("yow!")
matcher.close()

我一直认为它是一种return - 兄弟,所以现在我真的很感兴趣(yield)如何运作。有些人推荐我the Python 2 documentationPEP 342

但由于我不是母语人士,因此我很难理解那里所写的任何内容。有人可以用尽可能简单的语言告诉我(yield)的工作原理吗?

我理解你使用" yield"时的语法按需返回对象。但我不理解" line =(yield)"的实现。为什么"收益"是变量的值?

0 个答案:

没有答案