&引用;变量,变量=";python中的语法?

&引用;变量,变量=";python中的语法?,python,Python,我刚刚开始学习python,要么没有读过,要么错过了,我不知道要搜索什么来找到我的答案 在使用IMAP模块时,我遇到了这行代码 result, data = mail.search(None, "ALL") 这两个变量发生了什么?这是一种在方法返回特定方式时使用的语法,还是始终有效?有人能解释一下这里发生了什么,或者给我指一些文档吗?您可以在一行Python中分配多个变量:- a, b, c = 1, 2, 3 分别为a、b、c指定三个值1、2、3 类似地,您可以将列表中的值分配给变量 &g

我刚刚开始学习python,要么没有读过,要么错过了,我不知道要搜索什么来找到我的答案

在使用IMAP模块时,我遇到了这行代码

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

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

您可以在一行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个变量

这是序列解压的一种形式。如果RHS是长度为2的iterable(因为在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

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

在进行任何赋值之前,将首先计算右侧的表达式。右侧表达式从左到右求值

多重分配文档在这里


另一方面,
a,b=b,a
是一种巧妙的python式交换值的方式:)我第一次看到自己floored@JoranBeasley--我从来没有发现真正需要在我的代码中交换值,但每次我看到它都会让我发笑。它的另一个名字是解构。@RolandTepp--很有趣。我以前没见过这个词。下次我得去找它。