1. 程式人生 > 實用技巧 >python中a, b = a, a + b這條語句是如何執行的?

python中a, b = a, a + b這條語句是如何執行的?

a,b=b,a+b,這條語句在"理解"上還是與C語言有些差別的。
在Python中,可以做下面的方式理解:首先,把等號右邊的算式分別算完再說,然後按照一一對應的關係把值賦給等號左邊的變數,也就是a=b的值,b=a+b的值。
等號右邊第一個算式的值賦給等號左邊第一個變數,以此類推。
舉一個迴圈的例子說明一下更容易理解了:初始a=1,b=2。計算a,b=b, a+b。迴圈計算4次。
第(1)次:分別計算等式右邊,b=2,a+b=1+2=3,後左邊賦值a=2,b=3。
第(2)次:分別計算等式右邊,b=3,a+b=2+3=5,後左邊賦值a=3,b=5。
第(3)次:分別計算等式右邊,b=5,a+b=3+5=8,後左邊賦值a=5,b=8。

第(4)次:分別計算等式右邊,b=8,a+b=5+8=13,後左邊賦值a=8,b=13。
在python中就不用開發者去想著設定中間變數來儲存計算結果再賦值的過程了,簡化了程式設計的複雜性。 變數互換時,只需:a,b=b,a。這麼一句話就可以了。
在做“斐波那契數列”計算時,a,b=b,a+b。實現就顯得特別簡單了。 同時,三個變數也是也可以的,如:a,b,c=b,a+b,a+b+c。

樣例:

右邊的 a, a+b 本質上會返回一個tuple ,元組裡面的值先計算出來,然後這個左邊的a, b 會分別賦值為這個tuple裡的第一個和第二個。
>>> a=1
>>> b=2
>>> c=a,a+b
>>> print c---這裡 c=(1,3)
(1, 3)
>>> print type(c)
<type 'tuple'>
>>> print id(a)
8895592
>>> print id(b)
8895568
>>> print id(c)
139863933153648
>>>