【发布时间】:2020-11-19 02:41:29
【问题描述】:
之前我正在编写一些代码,当我在创建变量 myvar 时打错字时,它并没有通过错误或采取不同的行动。这是一行:
myvar, var2 = 1000, 1000,
为什么没有错误?
【问题讨论】:
-
它生成一个元组。
标签: python python-3.x variables python-3.5
之前我正在编写一些代码,当我在创建变量 myvar 时打错字时,它并没有通过错误或采取不同的行动。这是一行:
myvar, var2 = 1000, 1000,
为什么没有错误?
【问题讨论】:
标签: python python-3.x variables python-3.5
您正在生成一个元组并将其同时解压缩为两个不同的变量。你可以检查
mytuple = 1000, 1000,
这将生成(1000,1000) 中的tuple,无论最后的逗号是否存在(后面没有值)。
你会生成一个大小为 1 的元组
mytuple = 1000,
现在,您将在下一步中有效地破坏元组
myvar, var2 = 1000, 1000,
最后你有两个 int 类型的变量。
【讨论】:
对于新示例,您实际上仍在处理元组。 如果你打印出右手边是什么,你会得到
testVar = 1000, 1000,
print(testVar)
# result:
(1000,1000)
实际上发生的事情是 Python 看到一个元组,然后将其解压缩为两个值,并将一个分配给 myvar,另一个分配给 var2。归根结底,右手边仍然充当元组。
事实上,我们知道这是真的另一种方式是,如果我们尝试解压它但我们没有提供足够的变量:
myvar, = 1000, 1000,
这会引发异常:
ValueError: too many values to unpack (expected 1)
【讨论】:
你已经编辑了你的帖子,所以现在它提出了一个不同的问题。
In [1]: myvar = 10, 10
In [2]: myvar
Out[2]: (10, 10)
In [3]: myvar[0]
Out[3]: 10
In [4]: myvar, myvar2 = 10, 10
In [5]: myvar
Out[5]: 10
In [6]: myvar2
Out[6]: 10
In [7]: myvar, myvar2 = [10, 100] # A list
In [8]: myvar
Out[8]: 10
In [9]: myvar2
Out[9]: 100
【讨论】: