成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Python 中 a=a+b 與 a+=b 有什么不同?

開發(fā) 后端
只要熟悉 Python,那么你肯定知道 a=a+b 與 a+=b 都可以實(shí)現(xiàn)對對象 a 的自增操作,可以除此之外,他們有什么不同呢?如果這個(gè)是面試題,你會(huì)怎么回答呢?

 如果你說 a+=b 是 a=a+b 的簡單寫法,那你只說對了一半,你還沒有弄清楚 += 這種操作符的真正含義。

[[416063]]

這兩種操作的結(jié)果都是 a=a+b, 但左邊的 a 和 右邊的 a 還是同一個(gè)對象么?當(dāng)弄不清楚的時(shí)候,我們可以在 Python 解釋器中試驗(yàn)一下。

  1. >>> a = 1 
  2. >>> id(a) 
  3. 4420422336 
  4. >>> a = a + 2 
  5. >>> id(a) 
  6. 4420422400 
  7. >>> 
  8. >>> a = 1 
  9. >>> id(a) 
  10. 4420422336 
  11. >>> a += 2 
  12. >>> id(a) 
  13. 4420422400 
  14. >>> 

可以看出,兩種方式之后,a 與原來的 a 的 id 不同,它們不再是同一個(gè)對象,也就是說當(dāng) a 是數(shù)字的時(shí)候,a+=b 是 a=a+b 的簡單寫法,那么當(dāng) a 是列表的時(shí)候呢?

 

  1.  >>> a = [1] 
  2. >>> id(a) 
  3. 140401184850560 
  4. >>> a = a + [2] 
  5. >>> id(a) 
  6. 140401184297216 
  7. >>> 
  8. >>> a = [1] 
  9. >>> id(a) 
  10. 140401184850560 
  11. >>> a += [2] 
  12. >>> id(a) 
  13. 140401184850560 
  14. >>> 

可以看出,當(dāng) a 是列表時(shí),a += b,中的 a 與原來的 a 的 id 是同一個(gè),說明 a += b 并沒有創(chuàng)建新的對象,而 a = a+b 新創(chuàng)建了一個(gè)新的對象,創(chuàng)建對象是有成本的,因此在這種情況下, a+=b 的性能是比較高的,這一點(diǎn)可以驗(yàn)證:

 

兩種方法都執(zhí)行 10 萬次時(shí),性能相差 1900 倍。

總結(jié)一下,對不可變對象, a+=b 就是 a=a+b 的簡單寫法,比如數(shù)字,字符串,元組。請注意,元組也是可以 a+=b、a=a+b 的哦,元組的不可變,指的是這個(gè)元組指向的對象不可變,但是元組變量卻是可以指向新的元組的。

對于可變對象,a+=b 在 a 的基礎(chǔ)上進(jìn)行自增,不創(chuàng)建新對象,而 a=a+b,創(chuàng)建了新的對象,然后再讓變量 a 指向這個(gè)新創(chuàng)建的對象,涉及創(chuàng)建對象的操作,因此性能較差。可變對象有列表,字典,集合,類似的,a=a*b 與 a*=b 也是一樣的,不過只有列表才支持 + 和 * 這種運(yùn)算符。

最后的話

現(xiàn)在你應(yīng)該明白了 a=a+b 與 a+=b, a=a*b 與 a*=b 的區(qū)別。對于列表而言,a*=b、a*=b是在原有列表上原地進(jìn)行操作,不創(chuàng)建新的對象,性能會(huì)更高效。

有時(shí)候越簡單的問題,越是被人忽略,卻藏著不少細(xì)節(jié),技術(shù)的道路上,細(xì)節(jié)是魔鬼,搞懂細(xì)節(jié),也是提升技術(shù)水平的方法。

責(zé)任編輯:華軒 來源: Python七號(hào)
相關(guān)推薦

2014-08-18 13:35:24

LinuxBSD

2022-01-17 10:56:59

容器PodmanDocker

2017-03-23 18:24:41

CentOSUbuntuLinux

2014-06-12 19:38:29

LinuxBSD

2022-04-14 18:14:56

元宇宙B2B互聯(lián)網(wǎng)

2010-11-23 10:33:22

ATMMPLSSONET

2018-06-26 14:29:44

LinuxUnix不同

2019-09-24 09:33:53

MySQLB+樹InnoDB

2019-12-31 09:33:03

MongoDBB 樹NoSQL

2015-10-12 11:00:23

編程學(xué)校工作

2020-09-25 18:10:06

Python 開發(fā)編程語言

2023-01-09 07:30:19

人工智能B2B交易

2021-07-12 23:53:22

Python交換變量

2013-09-26 11:22:34

Informatica

2012-05-29 13:15:04

B2B

2021-03-11 19:14:42

Java常量池元空間

2011-01-21 10:16:40

chromeweb apps

2020-07-15 09:29:23

Python開發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 日韩精品一区二区三区在线播放 | 久久丝袜| 中文字幕1区2区3区 亚洲国产成人精品女人久久久 | 欧美极品一区二区 | 91综合在线观看 | 日本欧美在线视频 | 久久伊| 欧美小视频在线观看 | 亚洲精品在| 国产精品久久久久久久久免费相片 | 一区二区国产在线 | 欧美精品久久久久久久久老牛影院 | 久久久免费观看视频 | 国产一级片一区二区 | 91视频国产精品 | 日韩av电影在线观看 | 一区二区精品电影 | 高清人人天天夜夜曰狠狠狠狠 | 一区二区三区视频在线免费观看 | 日韩视频在线观看一区二区 | 视频一区二区中文字幕 | 日韩成人精品视频 | 国产精品99久久久久久久久久久久 | 亚洲看片 | 黄色国产在线视频 | 亚洲在线| 99精品99 | 亚洲综合色视频在线观看 | 国产日韩在线观看一区 | 日韩一区二区三区在线 | 尤物在线视频 | av免费网站在线观看 | 国产乱码精品1区2区3区 | av中文字幕在线观看 | www.久久久.com | 国产一二三视频在线观看 | 最新av在线播放 | 日韩久久综合网 | 欧美黑人一区 | 小草久久久久久久久爱六 | 国产精品久久777777 |