Python 中 a+=b 和 a=a+b 的區別
兩者是有區別的,這種區別只出現在可變物件上。
a+=b
- >>> a1=range(3) # [0,1,2]
- >>> a2=a1
- >>> a2+=[3] # +=呼叫__iadd__方法, 沒有該方法時,在呼叫__add__方法,a1.__iadd__([3]), 該方法在原物件a1上進行更新,該方法返回值為None
- >>> a1
- [0,1,2,3] # a1變化
- >>> a2
- [0,1,2,3] # a2 變化
a=a+b
- >>> a1=range(3)
- >>> a2=a1
- >>> a2=a2+[3] # 呼叫__add__方法,a1=a1.__add__([3]), 該方法返回一個新的物件,原物件不修改,這裡a1被重新賦值,指向一個新的物件
- >>> a1
- [0,1,2] # a1未變化
- >>> a2
- [0,1,2,3] # a2 變化
兩者是有區別的,這種區別只出現在可變物件上
相關推薦
python 中迭代和遍歷的區別
什麼是迭代? 迭代就是重複執行一段程式碼語句塊的能力。分為兩種方式 使用遞迴函式 使用迴圈(for 或 while 迴圈) 假設有個需求,要按照降序列印10以下(包括10),0 以上的整數,用遞迴和迴圈都可以實現,但都要重複執行一段程式碼語句,就是迭代。 遞迴函式實現 先看使用遞迴函式
python中init()方法和new()方法的區別
new()理解: class A(object): def __init__(self,*args,**kwargs): print "init &&&& %s" % self.__class__ def __new__(
python 中 '/' 和 '//'的區別
上述兩種符號可以總結為兩種形式 A/B :返回整個商的值 A//B:返回結果的最小整數 例程: >>> 9/2 4.5 >>> 9//2 4 >>> 3//0.5 6.0 >>> 7//0.3 23.0 >
python中氣泡排序和選擇排序及其區別
氣泡排序:每次去相鄰的兩個元素比較,不合適就交換,依次向後 選擇排序:將第一個元素和後面的元素挨個輪流比較,如果按照從小到大排序,大的排序往後面 #排序函式 def paixu(li): for j in range(1, len(li)): #j是外層迴
Python中os模組和sys模組的區別
首先,官方解釋是這樣的: os: This module provides a portable way of using operating system dependent functionality. 這個模組提供了一種方便的使用作業系統函式的方法。 sy
python 中的[:-1]和[::-1]有什麼區別?
1、案例解釋 a='python' b=a[::-1] print(b) #nohtyp c=a[::-2] print(c) #nhy #從後往前數的話,最後一個位置為-1 d=a[:-1] #從位置0到位置-1之前的數 print(d) #pytho e=a[:-2] &
python中range函式和xrange函式的區別
Range: range([start,] stop[, step]),根據start與stop指定的範圍以及step設定的步長,生成一個序列。 Xrange: 用法與range完全相同,所不同的是
Python中range函式和arange函式的區別
主要是返回值和建立型別不一樣,還有就是要不要匯入numpy包range(start, end, step),返回一個list物件,起始值為start,終止值為end,但不含終止值,步長為step。只能建立int型list。arange(start, end, step),與r
python中的str和repr函式的區別
看了一些網上的解釋,最主流的解釋是“str是給人看的,repr是給機器看的”,如果已經理解了的,這句話是對的,但是是有問題的,對於沒懂的,這句話是無法理解的。 我來嘗試解釋一下。先直譯一下官方文件: repr(object) Return a string containing a pr
python中淺拷貝和深度拷貝的區別
在很多面試題中都會問到淺拷貝跟深度拷貝的區別,前幾天一個朋友也問到了我淺拷貝跟深度拷貝到底有什麼區別,這裡就簡單舉栗子講一下兩者的區別。 淺拷貝(copy()):拷貝父物件,不會拷貝物件的內部的子物件 深拷貝( copy.deepcopy()):完全拷貝父物件跟子物件 import co
python 中 dist-packages 和 site-packages 的區別
site-packages 和 dist-packages 的區別 dist-packages is a Debian-specific convention that is also present in its derivatives, like U
python中str.find和 in list的區別使用
在一個str中查詢特定的字串,使用string1.find(substring)的語法,這種查詢時一種模糊查詢; 但是在一個list中,如果判斷是否包含某個專案,是一個絕對的相等的比較,空格都需要匹配; 所以使用查詢匹配時可以採用的方法是: 1.將list轉化為str之後
python中append函式和extend函式的區別
append() 方法用於在列表末尾新增新的物件。 extend() 函式用於在列表末尾一次性追加另一個序列中的多個值(用新列表擴充套件原來的列表) append()方法例項: 只是在lista後面新增相應字元: 使用append()新增一個字串li
python中深拷貝和淺拷貝的區別
賦值語句的是記憶體地址引用,不是拷貝拷貝是匯入copy包,分copy和deepcopy兩種,即淺拷貝和深拷貝對於非巢狀資料 copy.copy 和 copy.deepcopy 沒有區別 都會開闢新空間 儲存資料
python中經典類和新式類的區別
規則 應該 color isp 的區別 object pla 什麽是 view 要知道經典類和新式類的區別,首先要掌握類的繼承。類的繼承的一個優點就是減少代碼,而且使代碼看起來結構很完整。 那什麽是經典類,什麽是新式類呢? 經典類和新式類的主要區別就是類的繼承的方式 ,經典
在python中矩陣維度, (a,)和 a 有什麼區別?
在python中矩陣維度, (a,)和 a 有什麼區別? 測試: import numpy as np trainx = np.linspace(-1, 1, 10) print(trainx.shape) print(trainx[0].shape) print(*trainx
a+1和&a+1
16px color article .net 分布圖 detail 一個 har start 首先a是一個數組名,當看到這個a與&a時,一般我們的理解都是這個數組的首地址。沒錯,如果加上打印的話,確實兩個值是一樣的。 不過&a是整個數組的首地址,a則是數組
JAVA基礎——is-a 、have-a、和 like-a的區別
就是 不同類 alike 不同 pc機 空調 面向 們的 合成 1、is-a,has-a,like-a是什麽 在面向對象設計的領域裏,有若幹種設計思路,主要有如下三種: is-a、has-a、like-a java中在類、接口、抽象類中有很多體現。 了解java看這裏:什麽
DNS 的A name和C name的區別
1、什麼是域名解析? 域名解析就是國際域名或者國內域名以及中文域名等域名申請後做的到IP地址的轉換過程。IP地址是網路上標識您站點的數字地址,為了簡單好記,採用域名來代替ip地址標識站點地址。域名的解析工作由DNS伺服器完成。 2、什麼是A記錄? A (Address)
a[1]和1[a]——淺談陣列下標運算子
C語言裡,對陣列的操作在絕大部分情況下,會將陣列名隱式轉換成一個指向陣列首元素的指標來處理。 比如: int a[] = { 0, 1, 2, 3 }; 這是一個整型陣列。 如果我們要引用其中的第2個元素,可以用以下兩種方式。 printf("%