对于生成器的理解

什么是生成器呢?

生成器就是一次生成一个值的函数

就像是一把自动步枪,生成器中的值就它的子弹,枪平时都会有保险,在关保险的时候怎么扣扳机都不会射出子弹

而自动步枪呢还可以单点和全自动两个模式进行射击.

举个例子:

def func():
    for i in range(100):
        yield i

这就是个简单的生成器,当你调用func()的时候不会取出任何值而是产生了一个生成器,就像是给枪装上了子弹,但是开了保险.

那么,怎么给枪关保险呢?

将函数赋给一个变量

a = func()

这就是给枪开保险.

既然开了保险了那么怎么射击呢?

首先是单发:

print(a.__next__())

一次取一个值,这就是单发,想要在此取值重复此操作

print(a.__next__())
print(a.__next__())
print(a.__next__())
print(a.__next__())
print(a.__next__())

这就是你射击出来的子弹,但是稍微思考一下,如果是最后一发子弹怎么办?

程序会运行但是也会报错

这个错误就告诉你子弹打光了

接下来说说全自动:

for item in a:
    print(item)

其实就是一个for循环,这样就会把迭代器中的值全部取出来了,简称为"全自动"

猜你喜欢

转载自www.cnblogs.com/fangyanwangshijie/p/9610002.html