国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺析Python中字符串的intern機(jī)制

瀏覽:3日期:2022-07-09 10:46:06

intern機(jī)制:

字符串類(lèi)型作為Python中最常用的數(shù)據(jù)類(lèi)型之一,Python解釋器為了提高字符串使用的效率和使用性能,做了很多優(yōu)化,例如:Python解釋器中使用了 intern(字符串駐留)的技術(shù)來(lái)提高字符串效率,什么是intern機(jī)制?即值同樣的字符串對(duì)象僅僅會(huì)保存一份,放在一個(gè)字符串儲(chǔ)蓄池中,是共用的,當(dāng)然,肯定不能改變,這也決定了字符串必須是不可變對(duì)象。

簡(jiǎn)單原理:

實(shí)現(xiàn) Intern 機(jī)制的方式非常簡(jiǎn)單,就是通過(guò)維護(hù)一個(gè)字符串儲(chǔ)蓄池,這個(gè)池子是一個(gè)字典結(jié)構(gòu),如果字符串已經(jīng)存在于池子中就不再去創(chuàng)建新的字符串,直接返回之前創(chuàng)建好的字符串對(duì)象,如果之前還沒(méi)有加入到該池子中,則先構(gòu)造一個(gè)字符串對(duì)象,并把這個(gè)對(duì)象加入到池子中去,方便下一次獲取。

但是,解釋器內(nèi)部對(duì)intern 機(jī)制的使用策略是有考究的,有些場(chǎng)景會(huì)自動(dòng)使用intern ,有些地方需要通過(guò)手動(dòng)方式才能啟動(dòng),看下面幾個(gè)常見(jiàn)的小陷阱。

1.在shell中示例,并非全部的字符串都會(huì)采用intern機(jī)制。僅僅包括下劃線、數(shù)字、字母的字符串才會(huì)被intern,當(dāng)然不能超過(guò)20個(gè)字符。因?yàn)槿绻^(guò)20個(gè)字符的話,解釋器認(rèn)為這個(gè)字符串不常用,不用放入字符串池中。

>>> s1='hello'>>> s2='hello'>>> s1 is s2True# 如果有空格,默認(rèn)不啟用intern機(jī)制>>> s1='hell o'>>> s2='hell o'>>> s1 is s2False# 如果一個(gè)字符串長(zhǎng)度超過(guò)20個(gè)字符,不啟動(dòng)intern機(jī)制>>> s1 = 'a' * 20>>> s2 = 'a' * 20>>> s1 is s2True>>> s1 = 'a' * 21>>> s2 = 'a' * 21>>> s1 is s2False>>> s1 = 'ab' * 10>>> s2 = 'ab' * 10>>> s1 is s2True>>> s1 = 'ab' * 11>>> s2 = 'ab' * 11>>> s1 is s2False 2.但是在PyCharm中,只要是同一個(gè)字符串不超過(guò)20個(gè)字符,都為T(mén)rue,并不用是下劃線、數(shù)字、字母的字符串。個(gè)人理解:IDE支持的不好。

s1 = 'hell o's2 = 'hell o'print(s1 is s2) # Trues1 = 'hell!*o's2 = 'hell!*o'print(s1 is s2) # Trues1 = 'a' * 20s2 = 'a' * 20print(s1 is s2) # Trues1 = 'a' * 21s2 = 'a' * 21print(s1 is s2) # Falses1 = 'ab' * 10s2 = 'ab' * 10print(s1 is s2) # Trues1 = 'ab' * 11s2 = 'ab' * 11print(s1 is s2) # False 3.字符串拼接時(shí),涉及編譯運(yùn)行問(wèn)題

>>> s1 = 'hell'>>> s2 = 'hello'>>> s1 + 'o' is s2False>>> 'hell' + 'o' is s2True>>># 說(shuō)明shell和IDE在這方面沒(méi)有差異s1 = 'hell's2 = 'hello'print(s1 + 'o' is s2) # Falseprint('hell' + 'o' is s2) # True#因?yàn)?hell' + 'o'在編譯時(shí)已經(jīng)變成了'hello',而s1+'o'因?yàn)閟1是一個(gè)變量,他們會(huì)在運(yùn)行時(shí)進(jìn)行拼接,所以沒(méi)有被intern

作者:Nobita Chen出處:http://www.cnblogs.com/chenshengkai/

以上就是淺析Python中字符串的intern機(jī)制的詳細(xì)內(nèi)容,更多關(guān)于python 字符串的intern機(jī)制的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 日韩欧美综合在线二区三区 | 日韩欧美在线视频一区二区 | 亚洲欧美视频在线播放 | 久久久久久国产视频 | 国产成人综合自拍 | 国产在线一区二区三区 | 亚洲一区二区三区福利在线 | 米奇777色狠狠8888影视 | 性色综合 | 日韩色吧| 亚洲经典在线 | 国产精品一区久久精品 | 精品欧美成人bd高清在线观看 | 久久香蕉国产视频 | 日本一区二区三区精品视频 | 欧美成人高清性色生活 | 国产免费一区二区在线看 | 国产成人综合怡春院精品 | 丰满寡妇一级毛片 | 久久夜色精品国产亚洲 | 亚洲高清一区二区三区 | 成人午夜视频在线观看 | 深夜福利视频在线观看免费播放 | 欧美一级毛片在线观看 | 特黄特黄一级高清免费大片 | 九久久| 久久精品国产只有精品2020 | 美女视频很黄很a免费国产 美女视频黄.免费网址 | 亚洲成人一级 | 中文字幕有码在线观看 | 欧美日韩精品一区二区三区高清视频 | 日韩美一区二区 | 国产无毛 | 亚洲午夜大片 | 欧美日韩一级二级三级 | 亚洲国产一区在线二区三区 | 在线看片亚洲 | 日本在线视频观看 | 337p粉嫩日本亚洲大胆艺术照 | 国产精品亚洲一区二区三区 | 国产色在线观看 |