我剛剛開始使用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 –