zoukankan      html  css  js  c++  java
  • Python3基础 yield StopIteration.value获取函数的返回值

    •        Python : 3.7.3
    •          OS : Ubuntu 18.04.2 LTS
    •         IDE : pycharm-community-2019.1.3
    •       Conda : 4.7.5
    •    typesetting : Markdown

    code

    """
    @Author : 行初心
    @Date   : 2019/7/6
    @Blog   : www.cnblogs.com/xingchuxin
    """
    
    
    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"
    
    
    def main():
        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
    
    
    if __name__ == '__main__':
        main()
    
    

    result

    /home/coder/anaconda3/envs/py37/bin/python /home/coder/PycharmProjects/NumericalComputation/demo.py
    1
    2
    3
    4
    return value is work done
    
    Process finished with exit code 0
    
    

    source_code

    class StopIteration(Exception):
        """ Signal the end from iterator.__next__(). """
        def __init__(self, *args, **kwargs): # real signature unknown
            pass
    
        value = property(lambda self: object(), lambda self, v: None, lambda self: None)  # default
        """generator return value"""
    

    resource

    • [文档 - English] docs.python.org/3
    • [文档 - 中文] docs.python.org/zh-cn/3
    • [规范] www.python.org/dev/peps/pep-0008
    • [规范] zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_language_rules
    • [源码] www.python.org/downloads/source
    • [ PEP ] www.python.org/dev/peps
    • [平台] www.cnblogs.com
    • [平台] gitee.com


    Python具有开源、跨平台、解释型、交互式等特性,值得学习。
    Python的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。
    代码的书写要遵守规范,这样有助于沟通和理解。
    每种语言都有独特的思想,初学者需要转变思维、踏实践行、坚持积累。

    注意:博文仅可用于学习研究,不可用于生产环境中。
    为天地立心,为生民立命,为往圣继绝学,为万世开太平。
  • 相关阅读:
    U8自动、手动备份不成功 “远程组件初始化失败”
    关于延迟时间的一点智慧
    xe 最大连接数限制、记录客户连接、心跳
    应用开发框架之——根据数据表中的存储的方法名称来调用方法
    固定资产卡片管理累计折旧数不准确
    整理表索引
    用友U8固定资产总账重算语句
    新建自定义报表发布到普通菜单节点流程
    怎么更改月折旧率的小数位
    重建数据库索引等SQL常用语句
  • 原文地址:https://www.cnblogs.com/xingchuxin/p/11142684.html
Copyright © 2011-2022 走看看