• 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的设计哲学:优雅,明确,简单。提倡用一种方法,最好是只有一种方法来做一件事。
    代码的书写要遵守规范,这样有助于沟通和理解。
    每种语言都有独特的思想,初学者需要转变思维、踏实践行、坚持积累。

    注意:博文仅可用于学习研究,不可用于生产环境中。
    为天地立心,为生民立命,为往圣继绝学,为万世开太平。
  • 相关阅读:
    【转】深入理解JavaScript闭包(closure)
    【转】js之匿名函数
    【转】jQuery选择器大全
    模拟切水果的游戏以达到对JavaScript的一些基本语法操作的练习
    JavaScript增加一个随机颜色的div,并在一定时间后div自动消失
    程序猿,千万别说你不了解Docker!
    了解ASCII、gb系列、Unicode、UTF-8的区别
    ASCII、Unicode、GBK和UTF-8字符编码的区别联系
    X86服务器、小型机、大型机、塔式、机架式、刀片式服务器、工作站
    云、Iaas、Paas、Saas
  • 原文地址:https://www.cnblogs.com/xingchuxin/p/11142684.html
Copyright © 2020-2023  润新知