栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么python生成器只能使用一次?[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么python生成器只能使用一次?[重复]

生成器的工作原理类似于自动收报机磁带。调用

next
它时,它会为您提供下一个号码,但与列表不同,它会 忘记
它。这就是大多数效率的来源。由于它不必记住以前的值,因此内存占用空间要小得多(尤其是当最终并非所有值都需要时!)

也许可以重置某些生成器以使其再次运行,但这绝不能保证,如果您尝试这样做,某些生成器将彻底失败。Python不是
语言,因此您可能会有生成器在生成值时修改状态。例如,生成器例如:

def gimme_randoms():    while True:        yield random.random()

我可以称之为一堆,但是PRNG背后的状态

random
每次都会改变。

rs = gimme_randoms()a = next(rs)b = next(rs)c = next(rs)  # some numbers

重置此状态意味着什么?好吧,您期望:

rs2 = gimme_randoms()x = next(rs2)y = next(rs2)z = next(rs2)assert a == x and b == y and c == z  # Nonsense!

为了保持这种状态,您必须跟踪PRNG的初始状态,然后有办法将其种子设置回初始状态。这当然是 可行的 ,但是知道其底层实现如何修改状态不是生成器的
工作



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/626455.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号