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

原文地址:https://www.cnblogs.com/xingchuxin/p/11142676.html