python中生成器的惰性机制
生成器有一个惰性机制,只有当你需要的时候才给你(一个个的取),而不是一下字全部给你。可能有些抽象,来一个例子 吧。
普及一个小知识**:一只母鸡并不是生一辈子鸡蛋,有一个时间段。**
例:小明和小红两个人想吃鸡蛋,这天,小明和小红一起去街上卖鸡蛋,回到家,小明买了一筐鸡蛋,大概有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中生成器的惰性机制相关推荐
- [转载] Python中生成器和迭代器的区别
参考链接: Python迭代器 Python中生成器和迭代器的区别(代码在Python3.5下测试): Num01–>迭代器 定义: 对于list.string.tuple.dict等这些容器对 ...
- Python中的字符串驻留机制
字符串驻留机制(引用计数机制): 字符串驻留是一种在内存中仅保存一份相同且不可变字符串的方法. 系统维护interned字典,记录已被驻留的字符串对象. 对于短字符串,将其赋值给多个不同的对象时,内存 ...
- Python中生成器是什么?
何为生成器 生成器的wiki页:https://en.wikipedia.org/wiki/Generator_(computer_programming) 在计算机科学中,生成器是特定的迭代器,它完 ...
- python中的name mangle机制
#测试python中的name mangle机制class A:__attr1=1 #私有 类属性def __init__(self):self.attr2=2 #私有 对象属性@classmetho ...
- 在 Python 中妙用短路机制
作者 | 费弗里 来源 | Python大数据分析 本期我们即将学习的是:Python中短路机制的妙用. 不同于物理学中的「短路」(Short circuit)那般危险,Python中的短路机制非常有 ...
- Python中的内存管理机制
Python是如何进行内存管理的 python引用了一个内存池(memory pool)机制,即pymalloc机制,用于管理对小块内存的申请和释放 1.介绍 python和其他高级语言一样,会进行自 ...
- 简述python中的内存管理机制_Python中的内存管理机制
Python是如何进行内存管理的 python引用了一个内存池(memory pool)机制,即pymalloc机制,用于管理对小块内存的申请和释放 1.介绍 python和其他高级语言一样,会进行自 ...
- python中关系运算符惰性求值_python对象属性惰性取值
python面向对象进阶 在知乎上面看到这个如何让python对象属性具有惰性求值的能力,认真学习了一番,记录一下. __setattr__.__getattr__.__delattr__ class ...
- Python中字符串的驻留机制和常用方法
在python中字符串是基本数据类型,是一个不可变的字符序列. 字符串的驻留机制 使用三种不同的赋值方式赋值同一个字符串 a = 'python' b = "python" c = ...
最新文章
- LRU的理解与Java实现
- 图片本地化 php,php抓取远程图片本地化函数,很好用的.喜欢的拿去
- java.lang.NoSuchMethodError: org.springframework.boot.builder.SpringApplicationBuilder.init([Ljava
- 自动化测试基础篇--Selenium多窗口、句柄问题
- 人生---新---起点……
- 五一快乐假期每天都在上课qaq
- Linux之计划任务
- 初中毕业也能月薪过万!5个质量极高的教程网站,免费献给你
- 银行会计记账方法的种类
- 怎么用QQ截取右击出来的内容
- 计算机exo乐谱,History钢琴简谱-数字双手-EXO
- MySql 根据身份证号来判别所属省份年龄及性别
- CRC16_CCITT/True的Java计算实现
- java版怎么安装mod_java – 如何在Mac OS X上安装mod_jk
- item_get - 获得suning商品详情
- 个人培训项目-环境搭建
- 11月编程语言排行冠军揭晓,稳
- MATLAB的MEX文件编写和调试
- PTA数据结构与算法-第一章——褚论
- C语言中%d和%i格式说明符之间的差异