码迷,mamicode.com
首页 > 其他好文 > 详细

对于生成器的理解

时间:2018-09-08 18:56:09      阅读:159      评论:0      收藏:0      [点我收藏+]

标签:操作   函数   分享   一个   理解   def   sans   告诉   技术分享   

什么是生成器呢?

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

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

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

 

举个例子:

 

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循环,这样就会把迭代器中的值全部取出来了,简称为"全自动"

 

对于生成器的理解

标签:操作   函数   分享   一个   理解   def   sans   告诉   技术分享   

原文地址:https://www.cnblogs.com/fangyanwangshijie/p/9610002.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!