我刚刚开始使用python,或者没有读过这个,或者错过了它,我不知道要搜索什么来找到我的答案。
在玩 IMAP 模块时,我遇到了这行代码。
result, data = mail.search(None, "ALL")
这里的两个变量发生了什么?这是在方法以某种方式返回时使用的语法,还是总是有效?有人可以解释一下这里发生了什么,或者指向我一些文档吗?
我刚刚开始使用python,或者没有读过这个,或者错过了它,我不知道要搜索什么来找到我的答案。
在玩 IMAP 模块时,我遇到了这行代码。
result, data = mail.search(None, "ALL")
这里的两个变量发生了什么?这是在方法以某种方式返回时使用的语法,还是总是有效?有人可以解释一下这里发生了什么,或者指向我一些文档吗?
这是序列解包的一种形式。如果 RHS 是长度为 2 的可迭代对象(因为 LHS 上有 2 个对象),则可以使用它。例如:
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
您可以在一行中在 Python 中分配多个变量:-
a, b, c = 1, 2, 3
将三个值 1、2、3 分别分配给 a、b、c。
同样,您可以将列表中的值分配给变量。
>>> li = [1, 2, 3]
>>> a, b, c = li
>>> a
1
>>> b
2
这会将您的列表解压缩为 3 个变量
这是多重赋值:变量 result 和 data 同时获得从 mail.search(none, ALL) 返回的新值。
在任何赋值发生之前,右侧的表达式都首先被评估。右侧的表达式从左到右计算。
多重分配文件在这里