列表的加法 a a b和 a b有什麼區別

2021-10-23 09:28:52 字數 1309 閱讀 1436

這兩者貌似結果是一樣的,但是實際的執行結果卻大相徑庭

直接上**:

def

add(a,b)

:#a = a + b

a+=b #可變資料型別 在原有的資料位址上進行了拼接

return a

defadd2

(a,b)

: a = a + b

#此時的意義是將a b的內容進行拼接之後賦給了另乙個叫做a的位址,兩個變數的名稱相同但是是乙個不同的位址

#a+=b

return a

a =[1,

2]b =[3,

4]print

('1. id(a)=',id

(a))

c = add(a,b)

print

('2. id(a)=',id

(a))

print

('3. id(c)=',id

(c))

print

(c)#[1,2,3,4]

print

(a,b)

#[1,2,3,4] [3,4]

執行結果:

id(a)= 2360073848712

id(a)= 2360073848712

如果採用a = a + b的方式,則是將a和b拼接之後賦值給另乙個叫a的變數,此時的a並未變化

def

add(a,b)

:#a = a + b

a+=b #可變資料型別 在原有的資料位址上進行了拼接

return a

defadd2

(a,b)

: a = a + b

#此時的意義是將a b的內容進行拼接之後賦給了另乙個叫做a的位址,兩個變數的名稱相同但是是乙個不同的位址

#a+=b

return a

a =[1,

2]b =[3,

4]print

('1. id(a)=',id

(a))

c = add2(a,b)

print

('2. id(a)=',id

(a))

print

('3. id(c)=',id

(c))

print

(c)#[1,2,3,4]

print

(a,b)

#[1,2,3,4] [3,4]

執行結果:

id(a)= 2888459618184

id(a)= 2888459618184

a a b和a b的區別

本文的測試環境是vs2008,測試語言是c 以前我一直認為a a b a b沒有什麼區別,網上的一些人也認為這兩句沒有什麼很大的區別。但是今天在用c 中checked關鍵字檢查溢位的程式中發現用前者編譯不能通過,後者可以,帶著這個疑問,我又查了一些資料,終於有了乙個合理的解釋,如果有錯誤,希望大神指...

a a b和a b的區別

首先,高興啊高興,因為今天問小葉這個問題,他說沒有區別,哈哈,但是呢,我還是查到了區別,吼吼 因為,是他疏忽了。哦哦 其次,謝謝武讓的講解。下面進入正題 1 對於同樣型別的a,b來說 兩個式子執行的結果確實沒有什麼區別。但是從編譯的角度看吧 武讓說的 a b 執行的時候效率高。2 對於不同型別的a,...

python 中a b與a a b有什麼區別

看到乙個比較有意思的問題,就是python中a b與a a b有什麼區別 總體上講,a b是改變了a原始的值,而a a b是計算出a b後,a在指向那個值。這個也跟a和b的型別有關。當a和b是int或者string不可改變的時候,二者效果一樣。a 1,2,3,4 b a a 5 a,b 1,2,3,...