Python的yield相关理解
2017-03-23 14:49
267 查看
迭代器、生成器、yield
@(Python学习笔记)[python]迭代器生成器yield
迭代器
生成器
yield
迭代器
对于list,set,dict等,都可以用
for ... in ...的方式进行迭代。
生成器
generator = (x*x for x in range(3)),这样就生成了一个生成器,生成器也可以用
for...in...调用,但是只能调用一次。
yield
#生成迭代器 >>> def createGenerator(): ... mylist = range(3) ... for i in mylist: ... yield i*i ... >>> mygenerator = createGenerator() # 创建生成器 >>> print(mygenerator) # mygenerator is an object! <generator object createGenerator at 0xb7555c34> >>> for i in mygenerator: ... print(i)
生成的生成器只能调用一次,普通情况下用生成器可能并不会显得方便,但是当函数返回的集合规模很大并且希望只读一次的时候,这种方式就很方便了。其中一个典型的应用就是在
scrapy中,在返回
item时,都是用的
yield
要理解
yield,其中很重要的一点就是记住,当在调用
createGenerator()的时候,函数中的代码并没有执行,而只是返回了一个对象。
当用
for迭代生成器对象的时候,函数中的代码开始执行,并且在遇到
yield时,返回一个结果,然后继续执行(迭代),直到不再遇到
yield
参考文章
1.https://taizilongxu.gitbooks.io/stackoverflow-about-python/content/1/README.html
相关文章推荐
- python之yield理解
- Python中yield的理解
- python yield 实例理解要点
- 深入理解python的yield和generator
- Python天天美味(25) - 深入理解yield
- Python 深入理解yield
- [转]Python 深入理解yield
- Python 深入理解yield
- Python 深入理解yield
- python 之yield个人理解
- Python天天美味(25) - 深入理解yield
- Python 深入理解yield
- Python 深入理解yield
- Python中yield深入理解
- 深入理解python中的yield
- Python多线程的创建,相关函数和守护线程的理解
- Python 深入理解yield
- 【Python笔记】如何理解python中的generator functions和yield表达式
- 【Python注意事项】如何理解python中间generator functions和yield表情
- 基础入门_Python-进程相关.深入理解子进程/守护进程/进程高可用实现?