yield -- Python

yield(最大的优点:节省占用内存空间)

yield是一个关键词,类似return, 不同之处在于,yield返回的是一个生成器

#!usr/bin/env python
#coding:utf-8

'''
yield:关键字

'''
def createGenerator():
    mylist = range(3)
    for i in mylist:
        yield i*i


'''
调用是用来yield关键字的函数,返回的只是一个生成器对象,不会执行函数中的代码
'''
print(createGenerator())

for i in createGenerator():
    print(i)

这个例子并没有什么实际作用,仅说明当你知道你的函数将产生大量仅被读取一次的数据时,使用生成器将是十分有效的做法

要掌握yield,你必须明白 – 当你调用这个函数,函数中你书写的代码并没有执行;这个函数仅仅返回一个生成器对象。

然后,在每次for循环使用生成器时,都会执行你的代码

然后,是比较困难的部分:

第一次函数将会从头运行,直到遇到yield,然后将返回循环的首个值. 然后,每次调用,都会执行函数中的循环一次,返回下一个值,直到没有值可以返回

当循环结束,或者不满足”if/else”条件,导致函数运行但不命中yield关键字,此时生成器被认为是空的。

posted @ 2017-08-29 21:43  我是旺旺  阅读(165)  评论(0编辑  收藏  举报