首页 > 编程语言 > 详细

python基础之生成器

时间:2021-04-26 11:20:51      阅读:14      评论:0      收藏:0      [点我收藏+]

生成器的机制:边读取边生成数据

如何产生生成器?看如下示例:

g = (x * 3 for x in range(0, 11))
print(type(g))

执行结果:

<class generator>

可以看到,g的类型是generator,也就是生成器的意思。

那么生成器如果产生数据呢?接着上面的例子来看:

g = (x * 3 for x in range(0, 11))
print(type(g))

print(g.__next__())
print(g.__next__())

执行如下:

<class generator>
0
3

我们可以看到,每执行一次g.__next__()就会让生成器产生一个数据(该数据是 for x in range(0, 11)产生的数据 * 3)
当产生数据的次数超过了界限会怎样呢?

g = (x * 3 for x in range(0, 11))
print(type(g))

print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())
print(g.__next__())

执行结果:

<class generator>
0
3
6
9
12
15
18
21
24
27
30
Traceback (most recent call last):
  File "E:/practicemore/ddd.py", line 15, in <module>
    print(g.__next__())
StopIteration

我们可以看到,报错了,抛出了StopIteration 异常。

拓展:除了使用__next__(),还可以使用next()方法,将生成器对象传入即可

python基础之生成器

原文:https://www.cnblogs.com/ctltest/p/14703236.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!