从语法上讲,这两个语句在python中如何返回相同的值?

时间:2018-04-16 14:26:43

标签: python

从语法上讲,这两个语句如何返回相同的值?

x ,= range(1)
print(x) # prints 0

(x,) = range(1)
print(x) # here also prints 0

3 个答案:

答案 0 :(得分:2)

有两项工作正在进行中:

  1. 元组构造
  2. 序列拆包
  3. 如上所述,逗号使变量为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)