欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python 字符串池化的前提

 更新時(shí)間:2020年07月03日 15:59:11   作者:Leetao  
這篇文章主要介紹了Python 字符串池化的前提,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下

前言

在 Python 中經(jīng)常通過(guò)內(nèi)存池化技術(shù)來(lái)提高其性能,那么問(wèn)題來(lái)了,在什么情況下會(huì)池化呢? 讓我們通過(guò)幾個(gè)例子進(jìn)行一下理解一下.

預(yù)備知識(shí)

在查看例子之前,首先要提 python 中的一個(gè)函數(shù) id(),讓我們看一下函數(shù)說(shuō)明:

id(obj, /)
  Return the identity of an object.

  This is guaranteed to be unique among simultaneously existing objects.
  (CPython uses the object \'s memory address.)

通過(guò)上述說(shuō)明,可以得知 id() 將會(huì)返回對(duì)像的唯一標(biāo)識(shí),在 CPython 中將會(huì)返回內(nèi)存地址,也就是說(shuō)如果兩個(gè)對(duì)象 的 id 值一樣,可以說(shuō)著兩個(gè)對(duì)象是相同的了.

例子

example 00

a = ""
b = ""
print(id(a),id(b))
print(a is b)

輸出結(jié)果:

>>> a = ""
>>> b = ""
>>> print(id(a),id(b))
2114853370544 2114853370544
>>> print(a is b)
True

example 01

a = "a"
b = "a"
print(id(a),id(b))
print(a is b)

輸出結(jié)果:

>>> a = "a"
>>> b = "a"
>>> print(id(a),id(b))
2114883022608 2114883022608
>>> print(a is b)
True

example 02

a = "magic_string"
b = "magic" + "_" + "string"
print(id(a),id(b))
print(a is b)

輸出結(jié)果:

>>> a = "magic_string"
>>> b = "magic" + "_" + "string"
>>> print(id(a),id(b))
2114887161136 2114887161136
>>> print(a is b)
True

example 03

a = "magic!"
b = "mgaic!"
print(id(a),id(b))
print(a is b)

輸出結(jié)果:

>>> a = "magic!"
>>> b = "mgaic!"
>>> print(id(a),id(b))
2114885855416 2114889455408
>>> print(a is b)
False

example 04

a,b = "magic!","magic!"
print(id(a),id(b))
print(a is b)

輸出結(jié)果:
>>> a,b = "magic!","magic!"
>>> print(id(a),id(b))
2114885691912 2114885691912
>>> print(a is b)
True

example 05

a = "!"
b = "!"
print(id(a),id(b))
print(a is b)

輸出結(jié)果:

>>> a = "!"
>>> b = "!"
>>> print(id(a),id(b))
140564571922024 140564571922024
>>> print(a is b)
True

example 06

print(a*20 is 'aaaaaaaaaaaaaaaaaaaa')
print(a*21 is 'aaaaaaaaaaaaaaaaaaaaa')

輸出結(jié)果:

>>> print(a*20 is 'aaaaaaaaaaaaaaaaaaaa')
False
>>> print(a*21 is 'aaaaaaaaaaaaaaaaaaaaa')
False

總結(jié)

通過(guò)上述 7 個(gè)例子,我們不難對(duì) python 的字符串池化有個(gè)大概的認(rèn)識(shí),我們這里做個(gè)簡(jiǎn)單的總結(jié):

  1. 通過(guò) example 00,01,05,我們可以得出對(duì)于長(zhǎng)度為 0 或者 1 的字符串會(huì)被池化
  2. 通過(guò) example 02,03,我們可以得出字符串中只包含字母數(shù)字以及下劃線的字符串會(huì)被池化
  3. 通過(guò) example 04, 我們可以得出當(dāng)在同一行對(duì)不同變量,賦值如果相同的話,它們將會(huì)指向同一個(gè)對(duì)象,注意這里面的 “magic!” 并不符合池化的要求,這只是一種編譯器的優(yōu)化
  4. example 06 所出現(xiàn)的現(xiàn)象在 python 中有一個(gè)專(zhuān)業(yè)的術(shù)語(yǔ),講常量折疊(constant folding),顧名思義,在編譯優(yōu)化時(shí),講能夠計(jì)算出的結(jié)果的變量直接替換為常量.但是這沒(méi)有限制嗎?顯然不是的,在我們的例子中已經(jīng)發(fā)現(xiàn),當(dāng)長(zhǎng)度超過(guò)20的時(shí)候,折疊就會(huì)失效了,試想一下,如果沒(méi)有限制的話,初始化的字符串過(guò)長(zhǎng),將會(huì)嚴(yán)重導(dǎo)致性能的下降以及內(nèi)存的消耗

參考鏈接

The internals of Python string interning

exploring python code objects

Python string interning

Python String objects implementation

以上就是Python 字符串池化的前提的詳細(xì)內(nèi)容,更多關(guān)于Python 字符串池化的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python爬蟲(chóng)系列網(wǎng)絡(luò)請(qǐng)求案例詳解

    python爬蟲(chóng)系列網(wǎng)絡(luò)請(qǐng)求案例詳解

    這篇文章主要介紹了【Python從零到壹】python爬蟲(chóng)系列-網(wǎng)絡(luò)請(qǐng)求,從零開(kāi)始學(xué)習(xí)Python網(wǎng)絡(luò)爬蟲(chóng),如何從中獲取需要的數(shù)據(jù)信息,現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲(chóng)技術(shù)以供學(xué)習(xí)
    2021-04-04
  • 使用python實(shí)現(xiàn)strcmp函數(shù)功能示例

    使用python實(shí)現(xiàn)strcmp函數(shù)功能示例

    這篇文章主要介紹了使用python實(shí)現(xiàn)strcmp函數(shù)功能的示例,需要的朋友可以參考下
    2014-03-03
  • Python3將數(shù)據(jù)保存為txt文件的方法

    Python3將數(shù)據(jù)保存為txt文件的方法

    這篇文章主要介紹了Python3將數(shù)據(jù)保存為txt文件的方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • Python中怎樣查找文件當(dāng)前位置

    Python中怎樣查找文件當(dāng)前位置

    這篇文章主要介紹了Python中怎樣查找文件當(dāng)前位置的方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • python數(shù)字圖像處理圖像的繪制詳解

    python數(shù)字圖像處理圖像的繪制詳解

    這篇文章主要為大家介紹了python數(shù)字圖像處理圖像的繪制示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • python 獲取等間隔的數(shù)組實(shí)例

    python 獲取等間隔的數(shù)組實(shí)例

    今天小編就為大家分享一篇python 獲取等間隔的數(shù)組實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • 詳解Python_shutil模塊

    詳解Python_shutil模塊

    這篇文章主要介紹了Python_shutil模塊功能,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • python+selenium操作下拉框

    python+selenium操作下拉框

    這篇文章主要介紹了python+selenium操作下拉框,下面文章圍繞python+selenium實(shí)現(xiàn)下拉框的相關(guān)資料展開(kāi)全文章詳細(xì)內(nèi)容,需要的小伙伴可以參考一下
    2022-02-02
  • 教你使用python畫(huà)一朵花送女朋友

    教你使用python畫(huà)一朵花送女朋友

    這篇文章主要為大家講解如何使用python畫(huà)一朵花,送女朋友,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python smtplib模塊實(shí)現(xiàn)發(fā)送郵件帶附件sendmail

    python smtplib模塊實(shí)現(xiàn)發(fā)送郵件帶附件sendmail

    這篇文章主要為大家詳細(xì)介紹了python smtplib模塊實(shí)現(xiàn)發(fā)送郵件帶附件sendmail,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05

最新評(píng)論