我修改了Coroutines中的一些代码,如下所示:
def grep(p1, p2):
print("Searching for", p1 ,"and", p2)
while True:
line = (yield)
if (p1 or p2) in line:
print(line)
search = grep('love', 'woman')
next(search)
search.send("I love you")
search.send("Don't you love me?")
search.send("I love coroutines instead!")
search.send("Beatiful woman")
输出:
寻找爱情和女人 我爱你 你不爱我吗? 我喜欢coroutines!
在上次搜索中无法识别第二个参数"woman"
。那是为什么?
答案 0 :(得分:3)
你的情况应该是这样的:
if p1 in line or p2 in line:
因为(p1 or p2)
只要有内容就会返回p1
所以你当前的状况总是评估为if p1 in line:
答案 1 :(得分:0)
因为你的代码条件是两个参数(p1或p2)中的任何一个匹配它只返回p1,这就是为什么它不返回最后一个发送函数结果。 现在试试这段代码。
另外我附上代码输出的截图。
def grep(p1, p2):
print("Searching for", p1 ,"and", p2)
while True:
line = (yield)
if (p1) in line:
print(line)
if (p2) in line:
print(line)
search = grep('love', 'woman')
next(search)
search.send("I love you")
search.send("Don't you love me?")
search.send("I love coroutines instead!")
search.send("beautiful woman")