干货丨你知道Python中a += b和a = a + b的结果是不一样的吗?
生活随笔
收集整理的這篇文章主要介紹了
干货丨你知道Python中a += b和a = a + b的结果是不一样的吗?
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
可變類型和不可變類型
想要了解a += b和a = a + b結果是不是一樣。要先知道什么是可變變量和不可變變量。
Python中
- 不可變類型:數字,字符串,元組
- 可變類型:列表,字典
不可變類型運算舉例
不可變+=
不可變=+
不可變類型在進行+=和=+之后結果是一樣的。
可變類型運算舉例
可變+=
可變類型+=情況
可變=+
可變類型a=a+b情況
通過上圖對比我們發現可變類型的變量在進行a += b和a = a + b時結果是不一樣的。在進行+=操作時,a1和a2值同時改變,但是在進行先加后賦值時a1和a2不能同時改變。
大家一定要記住上面的結論
原理__add__和 iadd 的區別
- add 方法接收兩個參數,返回它們的和,兩個參數的值均不變。
- iadd 方法接收兩個參數,第一個參數的值改變
可變類型使用加號操作(即a=a+b),調用__add__會返回一個新的對象,原來的對象不變。
示意圖如下:
a1 = a1 + b 后a1會指向新的結果,但是a2指向不變
可變類型使用+=操作(即a+=b),調用__iadd__方法,第一個參數的值改變,即a1指向的本身內容發生改變,指向位置不發生改變。
示意圖如下:
a1 += b后a1指向的內容發生改變,指向的位置不發生改變,所以a2的內容也會跟著a1一起改變
總結
以上是生活随笔為你收集整理的干货丨你知道Python中a += b和a = a + b的结果是不一样的吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python中的partial便函数的理
- 下一篇: 白话 Python 的函数式编程