• Python3基础 yield next 获取生成器生出的值


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

    code

    coder@ubuntu:~$ source activate py37
    (py37) coder@ubuntu:~$ ipython
    Python 3.7.3 (default, Mar 27 2019, 22:11:17) 
    Type 'copyright', 'credits' or 'license' for more information
    IPython 7.5.0 -- An enhanced Interactive Python. Type '?' for help.
    
    In [1]: a = (2 * x + 1 for x in (1, 2, 3, 4))  # 生成器。用一个生成一个,省内存空间                 
    
    In [2]: next(a)                                                                                     
    Out[2]: 3
    
    In [3]: next(a)                                                                                     
    Out[3]: 5
    
    In [4]: next(a)                                                                                     
    Out[4]: 7
    
    In [5]: next(a)                                                                                     
    Out[5]: 9
    
    In [6]: next(a)                                                                                     
    ---------------------------------------------------------------------------
    StopIteration                             Traceback (most recent call last)
    <ipython-input-6-15841f3f11d4> in <module>
    ----> 1 next(a)
    
    StopIteration: 
    
    In [7]: # 超过迭代范围,抛出异常                                                                     
    
    In [8]: exit                                                                                        
    (py37) coder@ubuntu:~$ conda deactivate
    coder@ubuntu:~$ 
    
    

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

  • 相关阅读:
    LeetCode 560. Subarray Sum Equals K (子数组之和等于K)
    25、LinkedList特有方法
    24、List三个子类的特点
    23、数据结构之数组和链表
    22、Vector简介
    21、List遍历时修改元素的问题
    20、List集合中特有的方法
    19、集合概述
    18、Random类简介
    17、enum简介
  • 原文地址:https://www.cnblogs.com/xingchuxin/p/11142676.html
Copyright © 2020-2023  润新知