在Python中“消费”是什么意思?在迭代器中?

在Python中“消费”是什么意思?在迭代器中?,第1张

在Python中“消费”是什么意思?在迭代器中?

关于2。

实际上,我们必须区分两种情况。

记得格雷格·休吉尔(Greg Hewgill)写道:

“迭代器”是负责创建元素序列的单个对象。此序列可能是现有列表的元素,也可能是已计算的内容,例如质数或π的十进制数字。

第一种情况

迭代器计算刺激时必须产生的对象;也就是说,在调用之前不存在产生的对象

next()
。因此,如果为该对象分配了名称,则该对象将保留下来。如果不存在,则该对象将在一定时间内不绑定到名称空间中的名称而存在,然后它将在内存中消失,也就是说,它占用的位将在以后或早用于另一个对象。

第二种情况

是当迭代器返回属于列表,元组,字典等的先前存在的对象时。在这种情况下,由a产生的每个对象

next()
已经具有名称的绑定。然后,如果在对象“d出”到迭代器时为其分配了新名称,则将有两个名称绑定到该对象。而且,如果未将对象分配给名称,则它将继续仅绑定到一个名称,这足以使对象保持活动状态。

共同点:

每次通过迭代器的调用生成对象时,如果没有为其分配名称,则 *** 作的唯一结果是迭代器已被“消耗”。用这种方式可以说,即使在生成对象之后没有永久性后果,它也会发生使迭代器内部发生跟踪的事情。

有人谈到在给对象分配名称时也消耗了迭代器,但是,我不想混淆。

注意:

实际上,如果某个对象预先存在于列表中,则可能是它没有名称。但是列表包含它“包含”的每个对象的引用…实际上,列表并不“包含”对象,而仅引用对象…远远超出了我想说的范围。

关于3

您不应该编写3: “将变量分配给…时”

变量 一词在Python中是一个陷阱,因为它含义不明确。从其他语言的常识来看,Python中没有 变量 ,也就是说,
“内存的定界部分,其值可以更改”。 只有对象。 变量 这个词通常被用来表示一个 标识符 。因此,将其称为“ 标识符 ”或“
名称” 是一种更好的做法。这避免了混乱。

关于4

我认为仅一次调用就不可能从迭代器中获得两次收益

next()



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5650055.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存