Python yield StopIteration.value 获取函数的返回值

举报
千江有水千江月 发表于 2021/12/20 16:20:55 2021/12/20
【摘要】 环境信息ModelArtsNotebookmindspore1.2.0-openmpi2.1.1-ubuntu18.04  代码示例def yield_test(): a = 1 # next() 遇到yield会停止,保存数据并返回后面的数值 yield a a += 1 yield a a += 1 yield a a += 1 y...

环境信息

  • ModelArts
    • Notebook
      • mindspore1.2.0-openmpi2.1.1-ubuntu18.04

代码示例

def yield_test():
    a = 1
    # next() 遇到yield会停止,保存数据并返回后面的数值
    yield a

    a += 1
    yield a

    a += 1
    yield a

    a += 1
    yield a

    # 需要这个返回值,可是....next()遇到yield就停了。再next抛异常,如何办?
    # 用StopIteration
    return "work done"
test = yield_test()

while True:
    try:
        x = test.__next__()
        print(x)
    except StopIteration as e:
        # e.value 就是 return 返回的值
        print("return value is", e.value)
        break


1
2
3
4
return value is work done

源码学习

help(StopIteration)

Help on class StopIteration in module builtins:

class StopIteration(Exception)
 |  Signal the end from iterator.__next__().
 |  
 |  Method resolution order:
 |      StopIteration
 |      Exception
 |      BaseException
 |      object

备注

  1. 欢迎各位同学一起来交流学习心得^_^
  2. 在线课程、沙箱实验、认证、大赛、论坛和直播,其中包含了许多优质的内容,推荐了解与学习。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。