我刚刚开始使用python,或者没有阅读过这篇文章,或者错过了它,我不知道要寻找什么才能找到我的答案。“变量,变量=”在Python中的语法?
玩弄IMAP模块我碰到这行代码。
result, data = mail.search(None, "ALL")
这里发生了什么?这是一种当方法以某种方式返回时使用的语法,还是一直工作?有人可以解释这里发生了什么,或者指向我一些文档?
我刚刚开始使用python,或者没有阅读过这篇文章,或者错过了它,我不知道要寻找什么才能找到我的答案。“变量,变量=”在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
另一个名字是_destructuring_。 –
@RolandTepp - 有趣。我还没有看到过这个术语。我下次要去找。 – mgilson
可以在一个线在Python分配多个变量: -
a, b, c = 1, 2, 3
分配三个值1,2,3到,B,C分别。
同样,您可以将列表中的值分配给变量。
>>> li = [1, 2, 3]
>>> a, b, c = li
>>> a
1
>>> b
2
此解压缩你的名单分成3个变量
这是多重分配:变量结果和数据同时获得新的价值从mail.search返回(无,ALL)。
右侧的表达式在任何赋值发生之前都会首先进行评估。右侧表达式从左到右进行评估。
多任务文档是在一个侧面说明这里
'A,B = B,了'是交换价值的一个圆滑的Python的方式:)我第一次看到了,我是地板 –
@JoranBeasley - 我从未发现真正需要在代码中交换值,但每次看到它都会让我微笑。 – mgilson
http://docs.python.org/release/1.5.1p1/tut/tuples.html –