欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Python中is和==以及字符串駐留機(jī)制的示例分析-創(chuàng)新互聯(lián)

這篇文章主要介紹Python中is和 ==以及字符串駐留機(jī)制的示例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),建湖企業(yè)網(wǎng)站建設(shè),建湖品牌網(wǎng)站建設(shè),網(wǎng)站定制,建湖網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,建湖網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力。可充分滿(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

is 和 ==

先了解下官方文檔中關(guān)于 is 和 == 的概念。is 表示的是對(duì)象標(biāo)示符(object identity),而 == 表示的是相等(equality);is 的作用是用來(lái)檢查對(duì)象的標(biāo)示符是否一致,也就是比較兩個(gè)對(duì)象在內(nèi)存中的地址是否一樣(相當(dāng)于檢查 id(a) == id(b)),而 == 是用來(lái)檢查兩個(gè)對(duì)象引用的值是否相等(相當(dāng)于檢查 a.eq(b));這點(diǎn)和Java有點(diǎn)類(lèi)似,只不過(guò)Java中是用 == 來(lái)比較兩個(gè)對(duì)象在內(nèi)存中的地址,用 equals() 來(lái)檢查兩者之間的值是否相等。


is==
概念對(duì)象標(biāo)示符相等
作用比較對(duì)象在內(nèi)存中的地址檢查兩個(gè)對(duì)象引用的值
示例id(a) == id(b)a.eq(b)

字符串駐留機(jī)制

Python中的字符串采用了intern機(jī)制,當(dāng)需要值相同的字符串的時(shí)候(比如標(biāo)識(shí)符),可以直接從字符串池里拿來(lái)使用,避免頻繁的創(chuàng)建和銷(xiāo)毀,提升效率和節(jié)約內(nèi)存,因此拼接和修改字符串是會(huì)比較影響性能的。

因?yàn)槭遣豢勺兊?,所以字符串的操作都不是replace,而是新建對(duì)象,這也是為什么拼接多字符串的時(shí)候不建議用+而用join(),join()是先計(jì)算出所有字符串的長(zhǎng)度,然后再拷貝,只new一次對(duì)象。

需要注意的是,并不是所有的字符串都會(huì)采用intern機(jī)制,當(dāng)且僅當(dāng)只包含下劃線(xiàn)、數(shù)字、字母的字符串才會(huì)被intern。

相關(guān)示例

示例一

a = "hello"
b = "hello"
print(a is b) # 輸出 True 
print(a == b) # 輸出 True

值相同的簡(jiǎn)單字符串對(duì)象在字符串池里只會(huì)保存一份,這決定了字符串必須是不可變對(duì)象,所以a和b是同一個(gè)對(duì)象

示例二

a = "hello world"
b = "hello world"
print(a is b) # 輸出 False
print(a == b) # 輸出 True

a和b中都有空格,所以不會(huì)被intern(空格不是python標(biāo)識(shí)符),故a和b不是同一個(gè)對(duì)象。注意,這僅僅是在交互式命令行中執(zhí)行,而在PyCharm或者保存為文件執(zhí)行,結(jié)果是不一樣的,主要是因?yàn)榻忉屍髯隽艘徊糠謨?yōu)化

示例三

a = 'ab' + 'c' is 'abc'
print(a) # 輸出 True
ab = 'ab'
b = ab + 'c' is 'abc'
print(b) # 輸出 False

第一個(gè)'ab'+'c'是在compile-time(編譯期)求值的,被替換成了'abc',所以輸出為T(mén)rue;第二個(gè)示例,ab+'c'是在run-time(運(yùn)行期)拼接的,導(dǎo)致沒(méi)有被自動(dòng)intern

示例四

a = [1, 2, 3]
b = [1, 2, 3]
print(a is b) # 輸出 False
print(a == b) # 輸出 True

a和b是列表,不是同一個(gè)對(duì)象

示例五

a = [1, 2, 3]
b = a
print(a is b) # 輸出 True 
print(a == b) # 輸出 True

把a(bǔ)的引用復(fù)制給b(引用賦值),在內(nèi)存中其實(shí)是指向同一個(gè)對(duì)象

示例六

a = ["I", "love", "Python"]
b = a[:]
print(a is b) # 輸出 False
print(a == b) # 輸出 True
print(a[0] is b[0]) # 輸出 True
print(a[0] == b[0]) # 輸出 True

b通過(guò)切片操作重新分配了對(duì)象(切片賦值),但值和a相同。由于切片拷貝是淺拷貝,這說(shuō)明列表中的元素并未重新創(chuàng)建,因此a[0] is b[0]輸出為T(mén)rue

示例七

a = 1
b = 1
print(a is b) # 輸出 True
print(a == b) # 輸出 True

Python會(huì)對(duì)比較小的整數(shù)對(duì)象進(jìn)行緩存,下次用的時(shí)候直接從緩存中獲取

示例八

a = 320
b = 320
print(a is b) # 輸出 False
print(a == b) # 輸出 True

Python僅僅對(duì)比較小的整數(shù)對(duì)象進(jìn)行緩存(范圍為范圍[-5, 256]),而并非是所有整數(shù)對(duì)象。注意,這僅僅是在交互式命令行中執(zhí)行,而在PyCharm或者保存為文件執(zhí)行,結(jié)果是不一樣的,主要是因?yàn)榻忉屍髯隽艘徊糠謨?yōu)化

is 與 == 對(duì)比

is 與 == 相比計(jì)算速度會(huì)更快,因?yàn)樗荒苤剌d,不用進(jìn)行特殊的函數(shù)調(diào)用,通過(guò)直接比較兩個(gè)整數(shù) id,減少了函數(shù)調(diào)用的開(kāi)銷(xiāo)。而 a == b 則是等同于a.eq(b),繼承自 object 的 eq 方法原本也是比較兩個(gè)對(duì)象的id,結(jié)果與 is 一樣,但大多數(shù)Python對(duì)象會(huì)覆蓋重寫(xiě)object的 eq 方法,而定義內(nèi)容的相關(guān)比較,所以比較的是對(duì)象屬性的值。

在變量和單例值之間比較時(shí),應(yīng)該使用 is。目前,最常使用 is 的地方是當(dāng)判斷對(duì)象是不是 None,下面是推薦的寫(xiě)法: xxx is None;判斷不是None的推薦寫(xiě)法是: xxx is not None

以上是“Python中is和 ==以及字符串駐留機(jī)制的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站標(biāo)題:Python中is和==以及字符串駐留機(jī)制的示例分析-創(chuàng)新互聯(lián)
瀏覽路徑:http://chinadenli.net/article12/dcjhgc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站收錄、網(wǎng)站排名、企業(yè)建站、品牌網(wǎng)站設(shè)計(jì)、網(wǎng)站設(shè)計(jì)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

營(yíng)銷(xiāo)型網(wǎng)站建設(shè)
国产精品香蕉免费手机视频| 久久综合日韩精品免费观看 | 国产精品香蕉一级免费| 青草草在线视频免费视频| 在线观看视频国产你懂的| 不卡一区二区在线视频| 国产原创中文av在线播放| 九九热这里有精品20| 中文字幕亚洲在线一区| 欧美黑人巨大一区二区三区| 欧美精品日韩精品一区| 日韩欧美一区二区不卡视频| 国产日韩中文视频一区| 亚洲一区二区三区有码| 中文字幕欧美视频二区| 国产免费自拍黄片免费看| 最近最新中文字幕免费| 日韩成人动画在线观看| 女人精品内射国产99| 日韩欧美高清国内精品| 日韩一区二区三区免费av| 久久91精品国产亚洲| 国产欧洲亚洲日产一区二区| 亚洲综合日韩精品欧美综合区| 最新日韩精品一推荐日韩精品| 麻豆一区二区三区精品视频| 亚洲一区二区三区av高清| 91欧美视频在线观看免费| 日本淫片一区二区三区| 中文字幕佐山爱一区二区免费| 国产内射一级一片内射高清视频| 国产亚洲精品香蕉视频播放| 亚洲国产精品久久综合网| 国产精品午夜福利免费阅读| 熟女体下毛荫荫黑森林自拍| 精品国产成人av一区二区三区| 婷婷一区二区三区四区| 国产精品自拍杆香蕉视频| 色婷婷人妻av毛片一区二区三区| 欧美人禽色视频免费看 | 五月婷婷六月丁香狠狠|