python之yield使用
2016-03-24 19:36
716 查看
生成器:生成器属于迭代器,通过next()方法取值,可以用于for循环,通过yield可以自定义生成器。
例:
>>> def test_yield(n):
... i = 0
... while i <n:
... yield i**2
... i+=1
...
>>> g1 = test_yield(10)
>>> g1
<generator object test_yield at 0x7f1eeaefbaa0> ########g1为生成器
>>> g1.next()
0 ##生成器通过next()方法取值,每次g1调用函数时,当遇到yield时,函数停止,再次执行next()函数时,取下一个值(i**2)
>>> g1.next()
1
>>> g1.next()
4
>>> g1.next()
9
>>> g1.next()
16
>>> g1.next()
25
>>> g1.next()
36
>>> g1.next()
49
>>> g1.next()
64
>>> g1.next()
81
>>> g1.next() ##########取值结束,抛出异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
例:
>>> def test_yield(n):
... i = 0
... while i <n:
... yield i**2
... i+=1
...
>>> g1 = test_yield(10)
>>> g1
<generator object test_yield at 0x7f1eeaefbaa0> ########g1为生成器
>>> g1.next()
0 ##生成器通过next()方法取值,每次g1调用函数时,当遇到yield时,函数停止,再次执行next()函数时,取下一个值(i**2)
>>> g1.next()
1
>>> g1.next()
4
>>> g1.next()
9
>>> g1.next()
16
>>> g1.next()
25
>>> g1.next()
36
>>> g1.next()
49
>>> g1.next()
64
>>> g1.next()
81
>>> g1.next() ##########取值结束,抛出异常
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
StopIteration
相关文章推荐
- C#中yield return用法分析
- C# yield关键字详解
- c# yield提高代码性能和可读性
- Java多线程yield心得分享
- C# yield在WCF中的错误使用(二)
- C# yield在WCF中的错误用法(一)
- javascript实现yield的方法
- Python中的yield浅析
- 深入学习python的yield和generator
- 详解Python3中yield生成器的用法
- 初步解析Python中的yield函数的用法
- Python yield 使用浅析
- python之yield表达式学习
- Python中的生成器和yield详细介绍
- python中的yield使用方法
- Python yield使用方法示例
- 举例详解Python中yield生成器的用法
- Notes on Generator 1
- Notes on Generator 2
- python 11