# coding=utf-8
def test():
print("start!")
i=1
while True:
temp=yield i # 下次迭代时,代码从`yield`的下一条语句(不是下一行)开始执行
i+=1
print(f'i:{i}')
print(f"temp:{temp}")
print("end!")
return "done!"
if __name__ == '__main__':
a=test()
a.__next__()
a.__next__()
a.__next__()
C:\Users\黄佳文\AppData\Local\Microsoft\WindowsApps\python3.10.exe D:/pythonProject/pythonProject/pythonProject/pythonProject/生成器和迭代器/02_生成器函数yield的用法.py
start!
i:2
temp:None
i:3
temp:None
进程已结束,退出代码0
为什么11行代码没有运行,还说此代码无法访问?我该怎么做?
因为你使用了while True循环,中途没有退出过,而你只有三个__next__。
这是一个无限生成的生成器,你在调用最后一个next的时候,因为while True的缘故,又回到while True开头执行。
尽管你最后没有调用了,但是生成器的工作还是没有停止,堵在了while True那边