生成器有一个惰性机制,只有当你需要的时候才给你(一个个的取),而不是一下字全部给你。可能有些抽象,来一个例子 吧。

普及一个小知识**:一只母鸡并不是生一辈子鸡蛋,有一个时间段。**

例:小明和小红两个人想吃鸡蛋,这天,小明和小红一起去街上卖鸡蛋,回到家,小明买了一筐鸡蛋,大概有100个左右吧,小红买了一只母鸡(假设去除一切外界条件,母鸡不吃不喝也能生蛋(在生蛋期间)并且长生不老,只要主人需要,可以随时生蛋)。小明有一筐鸡蛋,所以可以几个蛋、十几个蛋,乃至一百个蛋一起吃。但是小红只能一个一个的吃,因为母鸡只会因为主人的需要下蛋。注意:这时候母鸡的行为就是python中生成器的惰性机制,只会根据需要取出,而且是一个个的,并不会一下子全部取出。这里有个格外注意的是:****生成器并不是取之不竭的,是可以取尽的。就像鸡一直会下蛋,但是会有下蛋的期间。如果一直下蛋且长生不老我早就养鸡去了 --。
生成器中的出就像数据结构中的出栈一样,出栈的多少取决于你栈里面有多少,栈里面出完了也就变成空了,什么都没有了。像装了稻谷的袋子一样,倒出的时候不可能无限的倒出稻谷,只能倒出袋子中原有的稻谷。否则我也想要个这样的袋子 -
-

下面来举个例子说明一下吧:

# #生成器有有一个惰性机制(母鸡)     你要他才给        一篮鸡蛋(拼命吃)和一只母鸡(要一个下一个)
def func():print(111)print(222)yield 222print(333)yield 777
#TODO yield是分段来执行一个函数,yield可以出现,
g=func()
print("&"*10)
g1=(i for i in g)
print(g1)
# for i in g1:
#     print(i)print(g)
print(g1)
print(list(g))结果:
&&&&&&&&&&
<generator object <genexpr> at 0x0000016C0A66AD60>
<generator object func at 0x0000016C0ABBFBA0>
<generator object <genexpr> at 0x0000016C0A66AD60>
111
222
333
[222, 777]


除此之外就是产生生成器对象,循环遍历后会发现取光了是怎么回事呢

python中生成器的惰性机制相关推荐

  1. [转载] Python中生成器和迭代器的区别

    参考链接: Python迭代器 Python中生成器和迭代器的区别(代码在Python3.5下测试): Num01–>迭代器 定义: 对于list.string.tuple.dict等这些容器对 ...

  2. Python中的字符串驻留机制

    字符串驻留机制(引用计数机制): 字符串驻留是一种在内存中仅保存一份相同且不可变字符串的方法. 系统维护interned字典,记录已被驻留的字符串对象. 对于短字符串,将其赋值给多个不同的对象时,内存 ...

  3. Python中生成器是什么?

    何为生成器 生成器的wiki页:https://en.wikipedia.org/wiki/Generator_(computer_programming) 在计算机科学中,生成器是特定的迭代器,它完 ...

  4. python中的name mangle机制

    #测试python中的name mangle机制class A:__attr1=1 #私有 类属性def __init__(self):self.attr2=2 #私有 对象属性@classmetho ...

  5. 在 Python 中妙用短路机制

    作者 | 费弗里 来源 | Python大数据分析 本期我们即将学习的是:Python中短路机制的妙用. 不同于物理学中的「短路」(Short circuit)那般危险,Python中的短路机制非常有 ...

  6. Python中的内存管理机制

    Python是如何进行内存管理的 python引用了一个内存池(memory pool)机制,即pymalloc机制,用于管理对小块内存的申请和释放 1.介绍 python和其他高级语言一样,会进行自 ...

  7. 简述python中的内存管理机制_Python中的内存管理机制

    Python是如何进行内存管理的 python引用了一个内存池(memory pool)机制,即pymalloc机制,用于管理对小块内存的申请和释放 1.介绍 python和其他高级语言一样,会进行自 ...

  8. python中关系运算符惰性求值_python对象属性惰性取值

    python面向对象进阶 在知乎上面看到这个如何让python对象属性具有惰性求值的能力,认真学习了一番,记录一下. __setattr__.__getattr__.__delattr__ class ...

  9. Python中字符串的驻留机制和常用方法

    在python中字符串是基本数据类型,是一个不可变的字符序列. 字符串的驻留机制 使用三种不同的赋值方式赋值同一个字符串 a = 'python' b = "python" c = ...

最新文章

  1. LRU的理解与Java实现
  2. 图片本地化 php,php抓取远程图片本地化函数,很好用的.喜欢的拿去
  3. java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.init([Ljava
  4. 自动化测试基础篇--Selenium多窗口、句柄问题
  5. 人生---新---起点……
  6. 五一快乐假期每天都在上课qaq
  7. Linux之计划任务
  8. 初中毕业也能月薪过万!5个质量极高的教程网站,免费献给你
  9. 银行会计记账方法的种类
  10. 怎么用QQ截取右击出来的内容
  11. 计算机exo乐谱,History钢琴简谱-数字双手-EXO
  12. MySql 根据身份证号来判别所属省份年龄及性别
  13. CRC16_CCITT/True的Java计算实现
  14. java版怎么安装mod_java – 如何在Mac OS X上安装mod_jk
  15. item_get - 获得suning商品详情
  16. 个人培训项目-环境搭建
  17. 11月编程语言排行冠军揭晓,稳
  18. MATLAB的MEX文件编写和调试
  19. PTA数据结构与算法-第一章——褚论
  20. C语言中%d和%i格式说明符之间的差异

热门文章

  1. ols残差_数据挖掘 第四篇:OLS回归分析
  2. bilibili2020 1024ctf安全挑战赛(上)
  3. [最后版本]利用TWAIN-实现与图像输入设备的通讯--孙涛--
  4. 关于黄金的一些知识备用一下
  5. Python数据分析工具
  6. 数据分析师之所需要了解的产品系列知识(四)——如何提高用户留存率
  7. java乘法器_乘法器设计
  8. 利用C++打造双人对战的五子棋游戏,界面新颖「附源码」
  9. 贴片0603蓝光led启动电压
  10. 软件测试的7项基本原则