您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

关于2。

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

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

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

迭代器计算刺激时必须产生的对象;也就是说,在调用之前不存在产生的对象next()。因此,如果为该对象分配了名称,则该对象将保留下来。如果不存在,则该对象将在一定时间内不绑定到名称空间中的名称而存在,然后它将在内存中消失,也就是说,它占用的位将在以后或早用于另一个对象。

是当迭代器返回属于列表,元组,字典等的先前存在的对象时。在这种情况下,由a产生的每个对象next()已经具有名称的绑定。然后,如果在对象“弹出”到迭代器时为其分配了新名称,则将有两个名称绑定到该对象。而且,如果未将对象分配给名称,则它将继续仅绑定到一个名称,这足以使对象保持活动状态。

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

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

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

关于3

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

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

关于4

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

python 2022/1/1 18:42:08 有523人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶