专注于
IT技术和业内交流

Python生成器

定义

生成器就是一个返回迭代器的函数。和普通函数的区别是,其中包含有yield语句。yield语句会暂停函数的执行,并返回yield语句的值。例子:

def MyGen():
    yield 1
    yield 2

g = MyGen()
print g.next()
print g.next()

输出:
1
2

生成器的三个成员函数:next,send,throw

  • next():执行到下一个yield处暂停,并返回到yield后的值。
  • send(value):调用此方法将会先给yield 表达式发送一个值value,然后从暂停的yield开始执行到下一个yield位置,并返回yield后面的值
def MyGen():
    tmp = yield 1
    yield tmp

g = MyGen()
print g.next()
print g.send(10)#先给第一个yield(上一次暂停的地方)表达式发送一个值,所以tmp=10,再从暂停的yield开始执行到下一个yield,并返回tmp

输出:
1
10
  • throw(Error):和send类似,只是send是让yield表达式返回一个值,throw是让yield表达式返回一个异常。
def MyGen():
    try:
        yield 1
    except ValueError:
        yield "error"

g = MyGen()
print g.next()
print g.throw(ValueError)

输出:
1
error

未经允许,不得转载本站任何文章:代码山 » Python生成器

分享到:更多 ()

专注品牌化高端网站建设

商务服务联系我们