这称为元组解包。
In [24]: x,y = 0,1
In [25]: print(x)
0
In [26]: print(y)
1
您可以对任何序列执行此操作。在上面,您使用 (0,1) 在线指定一个元组。你也可以解包,比如说,一个可迭代的:
In [28]: a,b,c = range(3)
In [29]: a
Out[29]: 0
In [30]: b
Out[30]: 1
In [31]: c
Out[31]: 2
但是你必须确保你提供给 unpack 的参数数量是有意义的。
In [32]: a,b = range(3)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/home/ben/<ipython-input-32-ec703b8346af> in <module>()
----> 1 a,b = range(3)
ValueError: too many values to unpack (expected 2)
In [33]: a,b,c,d = range(3)
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/home/ben/<ipython-input-33-16ef42f82877> in <module>()
----> 1 a,b,c,d = range(3)
ValueError: need more than 3 values to unpack
请注意(这似乎是让您感到困惑的部分)右侧是在左侧之前评估的。这允许常见的成语:
In [34]: x = 0
In [35]: y = 1
In [36]: x,y = y,x