1. 程式人生 > 實用技巧 >python_複合賦值運算理解

python_複合賦值運算理解

理解符合賦值運算 a += a 與 a = a + a 是不一樣的

In [22]: a = [100]
In [23]: id(a)
Out[23]: 140100796244928

In [24]: def test1(a):                
    ...:     a = a + a                     #這裡先計算的等號右邊,a + a  即 [100]  + [100]  結果為 [100,100], 然後等號左邊a使用新的 引用指向  [100,100]          
    ...:     _id = id(a)
    ...:     print(a,_id)
    ...: test1(a)
[100, 100] 140100794569472                 #
函式中的a的引用地址 已經不是外部a的引用地址了 In [25]: a #整個過程 a 未被改變 ! Out[25]: [100] In [26]: id(a) Out[26]: 140100796244928 #外部的 a 空間地址沒有被改變 In [28]: def test2(a): ...: a += a # =a 將等號右邊 指向 [100] 然後進行運算 即在a的引用指向的位置 進行修改
...: _id = id(a) ...: print(a,_id) ...: test2(a) [100, 100] 140100796244928 #函式中a的地址就是 外部變數a的地址 ,即直接對外部a進行修改了 In [29]: a Out[29]: [100, 100] #外部a 已經被修改! 因為函式內的a引用 和 外部a引用是同一個 In [30]: id(a) Out[30]: 140100796244928