回答
,我們可以把這個給:(a, b) = (b, a + b)
考慮到a = 3
和b = 6
(b, a + b)
返回一個元組(6, 9)
這些值分配給列出的變量(a, b)
,並指定(a = 6, b = 9)
操作。
所以最終值是a = 6
和b = 9
。
Python有一次傳輸多個值的能力。這意味着「將a設爲b,將b設爲a和b的和」。
有一個更全面的解釋here。
鏈接已經死了,你的意思是不同的頁面可能嗎? –
@ShadowWizard沒有。我的意思是,當我寫它。不幸的是,該鏈接已經移動,但你仍然可以通過wayback機器找到它:http://web.archive.org/web/20100419171004/http://diveintopython.org/getting_to_know_python/multiple_values.html – cwallenpoole
奇怪的是,所有其他鏈接在新域中仍然存在 –
a
給出的b
和b的值被給予更多的技術說明可發現here
a+b
A的值,是與tuple-decomposition(或序列拆包)的分配和也可能被稱爲多重任務語句。
RIGHT上的元組評估爲然後結果被指定爲槽的時隙到左邊的變量。 (左邊是不是真的即使語法使它看起來像一個。一個元組)
所以,
a = 1
b = 2
a, b = b, a + b
// a, b = 2, 1 + 2
// a, b = 2, 3
// a = 2
// b = 3
編碼愉快。
這是一個稱爲'unpacking'的python特徵的語法糖。這實際上意味着:
(a, b) = (b, a + b) # This is also valid syntax
創建了元組(b, a + b)
,鎖定值。然後,將這些值分段分配給元組(a,b)中的標識符。由於值在分配開始之前被鎖定,因此每個值都取得期望值。這個想法來源於Haskell中的模式匹配。
這被稱爲序列拆包。右側被打包成一個元組(因爲逗號)。 Python包然後評估右側,然後將這些值解包到左側。
- 1. 試圖瞭解CSS3語法
- 2. 試圖瞭解F#類定義語法
- 3. 新到Android - 試圖瞭解Java語法:「追加」
- 4. 瞭解Python語法/表示法
- 5. 瞭解python中的csv DictWriter語法
- 6. Python嘗試除了無效的語法?
- 7. 試圖瞭解MD5算法
- 8. 新的Python和想了解的argv語法
- 9. 瞭解語法
- 10. 試圖瞭解新的關鍵字
- 11. 試圖瞭解
- 12. 試圖瞭解開源的節點回調語法
- 13. 試圖瞭解語法在回調函數中的工作
- 14. 試圖瞭解這個.contain的語法()函數
- 15. 試圖瞭解ruby語法的特定位
- 16. 試圖瞭解Python Unicode異常
- 17. 試圖瞭解一個Python代碼行
- 18. 試圖瞭解Python裝飾器
- 19. 試圖瞭解Knuth的排列算法
- 20. Jquery:瞭解語法
- 21. 瞭解LINQ語法
- 22. 瞭解DART語法
- 23. 瞭解Javascript語法?
- 24. 瞭解算法的語言語法
- 25. scapy新手。試圖瞭解sr()
- 26. 新來JS,試圖瞭解吊裝
- 27. 抽象語法樹 - 菜鳥級(試圖瞭解)
- 28. 試圖瞭解「模板<class U>朋友類B」;語法
- 29. 試圖瞭解在伊莎貝爾「語法」關鍵字/ HOL
- 30. 試圖瞭解onPageScrolled
它被稱爲[平行分配](http://en.wikipedia.org/wiki/Assignment_(computer_science)#Parallel_assignment)。 – miku
@miku:Neato - 我已經使用過這種技術很多次了,但沒有意識到它有一個正式的術語。 – Gerrat
哈哈。這就像面試問題。我希望沒有人真的寫上面的代碼,但是,我想,可能我會。至少,真正的變量名稱會更有意義。 – morningstar