从语法上讲,这两个语句如何返回相同的值?
x ,= range(1)
print(x) # prints 0
(x,) = range(1)
print(x) # here also prints 0
答案 0 :(得分:2)
有两项工作正在进行中:
如上所述,逗号使变量为tuple
。这两种情况都是如此。
此外,这些是序列解包的示例。换句话说,range(1)
的元素被解压缩并归因于tuple
的元素,在本例中为(x, )
。
由于这些是长度为1的元组,因此从range(1)
解包的单个元素(即0)将分配给x
。
答案 1 :(得分:1)
检查一下例如:
v1 = 1,
v2 = (1,)
type(v1) # outputs <type 'tuple'>
type(v2) # outputs <type 'tuple'>
逗号从表达式创建一个元组,而括号只是可选的。
答案 2 :(得分:0)
两者都是元组,()可选地
In [29]: a=x,
In [30]: b=(x,)
In [32]: type(a)
Out[32]: tuple
In [33]: type(b)
Out[33]: tuple
In [34]:
让我们说如果你把逗号放在y之后并制作范围(2) 然后它解压缩两个值并分别分配给x和y
In [36]: x,y=range(2)
In [37]: x,y
Out[37]: (0, 1)
In [38]: (x,y)=range(2)
In [39]: x,y
Out[39]: (0, 1)