这是我的代码:
版本1
def X():
while True:
pos = something.find("xxx")
if pos != -1:
yield pos
break
版本2
def X():
while True:
pos = something.find("xxx")
if pos == -1:
break
yield pos
版本1只给了我1个结果,而版本2给了我所有结果! WTF?
答案 0 :(得分:0)
在版本1中,您将在第一次迭代结束时立即(无条件地)打破循环。
在版本2中,只有在找不到字符串"xxx"
时才会打破循环。
答案 1 :(得分:0)
这两个函数都是生成器函数,但在版本1中,它检查位置并将其与-1进行比较,如果满足条件,则生成结果,否则会中断循环。
def X():
while True:
pos = something.find("xxx")
if pos != -1:
yield pos
break
在版本2中,它一直产生结果,直到它到达文件-1的末尾或得到-1作为pos的值。
def X():
while True:
pos = something.find("xxx")
if pos == -1:
break
yield pos