生成器 generator yield for循环调用

补充一个知识点:

生成器的创建方式有两种

(1)生成器推导式

                列表推导式的 【】改成()就成了生成器  

                而不是元组推导式
                想要用推导式得到一个元组,需要用        tuple() 将推导式得到的生成器转化成元组

ge=(i for i in range(9))
print(ge)
print(type(ge))

>>>    <generator object <genexpr> at 0x000002A00A1E42E0>
>>>    <class 'generator'>

                此时,print(ge)打印出来的是个生成器对象,而不是具体内容 

(2)使用yield关键字

找了一大串文章,看的眼花缭乱,也没看懂   自己写理解吧  

1.使用yield的函数就不是函数了  是一个生成器generator

        生成器内置有一个__next__(即next()函数),这个是精髓

        即 看到yield——系统识别这是一个生成器,不是函数——给这个生成器内置一个next(),给其他对象调用

2.所以调用带yield的所谓函数时,其实就是调用了生成器 

3.调用生成器返回的是一个可迭代对象

4.命令调用生成器的时候,只是把这个生成器拿出来准备使用,但并

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值