为什么在Python协同程序中未检测到第二个参数?
我修改了以下代码:为什么在Python协同程序中未检测到第二个参数?,python,coroutine,Python,Coroutine,我修改了以下代码: 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("Do
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")
输出:
寻找爱情和女人我爱你
你不爱我吗?
我更喜欢合作
第二个参数
“woman”
在上次搜索中无法识别。为什么会这样?你的情况应该是这样的:
if p1 in line or p2 in line:
因为(p1或p2)
会返回p1
,只要里面有东西。因此,如果p1在第行:中,您当前的状况总是计算为
,您的状况应该是这样的:
if p1 in line or p2 in line:
因为(p1或p2)
会返回p1
,只要里面有东西。
因此,如果第1行中的p1为:
,则当前条件的计算结果始终为,因为您的代码条件是两个参数(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")
因为您的代码条件是两个参数(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")
如果您在python解释器中键入a=“love”和b=”woman”
,如果我们执行a或b
,则返回love
同样相关:如果您在python解释器中键入a=“love”和b=”woman”
,如果我们执行a或b
,则返回love
同样相关: