python中的“variable,variable =”语法?

时间:2012-10-16 20:40:42

标签: python

我刚刚开始使用python,要么没有读过这个,要么错过了,我不知道该搜索什么来找到答案。

使用IMAP模块我遇到了这行代码。

result, data = mail.search(None, "ALL")

这两个变量发生了什么?这是方法以某种方式返回时使用的语法,还是始终有效?有人可以解释一下这里发生了什么,或者给我一些文档吗?

3 个答案:

答案 0 :(得分:10)

这是序列解包的一种形式。如果RHS是长度为2的可迭代(因为LHS上有2个对象),您可以使用它。 e.g:

a,b = (1, 2)  #The RHS here is a tuple, but it could be a list, generator, etc.
print a #1
print b #2

Python3以一种有趣的方式对此进行扩展,以允许RHS拥有比LHS更多的值:

a,b,*rest = range(30) 
print(a) #0
print(b) #1
print(rest == list(range(2,30))) #True

答案 1 :(得分:3)

您可以在一行中分配Python中的多个变量: -

a, b, c = 1, 2, 3

分别为a,b,c分配三个值1,2,3。

同样,您可以将列表中的值分配给变量。

>>> li = [1, 2, 3]    
>>> a, b, c = li
>>> a
1
>>> b
2

这会将您的列表解压缩为3个变量

答案 2 :(得分:0)

这是多项赋值:变量result和data同时获取mail.search(none,ALL)返回的新值。

在进行任何分配之前,首先评估右侧的表达式。右侧表达式从左到右进行评估。

多个作业文档在这里

http://docs.python.org/tutorial/introduction.html