python“扔掉”变量如何工作?

Ric*_*eld 4 python

可以说我有:

[obj for (_, obj) in stack]
Run Code Online (Sandbox Code Playgroud)

此代码假定第一个对象stack是元组,并丢弃元组的第一部分。

如果代码不是元组,而是单个对象,会发生什么?

它是否只是忽略扔掉的部分并拿走整个物体?

Łuk*_*ski 6

_ 这只是一个约定,任何其他名称的行为方式都相同。

Name_只是指向解压元组的第一个元素。当该名称超出范围引用时,计数器减少,没有其他命名引用“解包元组的第一个元素”,并且该对象可以安全地进行垃圾收集。

由于_这只是约定,因此尝试解包 tuple with 的_行为将与任何其他名称相同 - 它会引发异常,以下之一:

a, b = 1  # TypeError: 'int' object is not iterable
a, b = () # ValueError: need more than 0 values to unpack
a, b = (1, 2, 3) # ValueError: too many values to unpack
Run Code Online (Sandbox Code Playgroud)