Python_huangjiaw 2022-05-03 18:18 采纳率: 93.3%
浏览 24
已结题

生成器yield的用法

问题遇到的现象和发生背景
问题相关代码,请勿粘贴截图
# 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行代码没有运行,还说此代码无法访问?我该怎么做?

  • 写回答

1条回答 默认 最新

  • Python-ZZY 2022-05-03 20:21
    关注

    因为你使用了while True循环,中途没有退出过,而你只有三个__next__。
    这是一个无限生成的生成器,你在调用最后一个next的时候,因为while True的缘故,又回到while True开头执行。
    尽管你最后没有调用了,但是生成器的工作还是没有停止,堵在了while True那边

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月11日
  • 已采纳回答 5月3日
  • 创建了问题 5月3日

悬赏问题

  • ¥15 请看一下,学校实验要求,我需要具体代码
  • ¥50 pc微信3.6.0.18不能登陆 有偿解决问题
  • ¥20 MATLAB绘制两隐函数曲面的交线
  • ¥15 求TYPCE母转母转接头24PIN线路板图
  • ¥100 国外网络搭建,有偿交流
  • ¥15 高价求中通快递查询接口
  • ¥15 解决一个加好友限制问题 或者有好的方案
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃