最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 字符串池化的前提

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

前言

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

預備知識

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

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.)

通過上述說明,可以得知 id() 將會返回對像的唯一標識,在 CPython 中將會返回內(nèi)存地址,也就是說如果兩個對象 的 id 值一樣,可以說著兩個對象是相同的了.

例子

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é)

通過上述 7 個例子,我們不難對 python 的字符串池化有個大概的認識,我們這里做個簡單的總結(jié):

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

參考鏈接

The internals of Python string interning

exploring python code objects

Python string interning

Python String objects implementation

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

相關(guān)文章

  • Python如何使用argparse模塊處理命令行參數(shù)

    Python如何使用argparse模塊處理命令行參數(shù)

    這篇文章主要介紹了Python如何使用argparse模塊處理命令行參數(shù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • Python 查詢學生的平均分數(shù)的實現(xiàn)

    Python 查詢學生的平均分數(shù)的實現(xiàn)

    這篇文章主要為大家詳細介紹了Python 查詢學生的平均分數(shù)的實現(xiàn),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 淺析Python中元祖、列表和字典的區(qū)別

    淺析Python中元祖、列表和字典的區(qū)別

    Python中有三種內(nèi)建的數(shù)據(jù)結(jié)構(gòu):列表、元祖和字典,這篇文章對這三種數(shù)據(jù)結(jié)構(gòu)進行了分別的介紹與實例演示,讓大家更簡潔明了的了解這三個之間的區(qū)別,下面一起來看看。
    2016-08-08
  • Python 自制簡單版《我的世界》的詳細過程

    Python 自制簡單版《我的世界》的詳細過程

    這篇文章主要介紹了教你用 Python 自制簡單版《我的世界》,接下來,我們就帶你運行這個項目,并對這個開源的小游戲做一下簡單的更改,讓它變成“你的”世界
    2021-11-11
  • 詳解pandas的外部數(shù)據(jù)導入與常用方法

    詳解pandas的外部數(shù)據(jù)導入與常用方法

    這篇文章主要介紹了詳解pandas的外部數(shù)據(jù)導入與常用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-05-05
  • Python自動化辦公之Excel數(shù)據(jù)的寫入

    Python自動化辦公之Excel數(shù)據(jù)的寫入

    這篇文章主要為大家詳細介紹一下Python中excel的寫入模塊- xlsxwriter,并利用該模塊實現(xiàn)Excel數(shù)據(jù)的寫入,感興趣的小伙伴可以了解一下
    2022-05-05
  • Python中異常捕獲與處理的方法總結(jié)

    Python中異常捕獲與處理的方法總結(jié)

    Python異常是在程序執(zhí)行時發(fā)生的錯誤,可能會導致程序終止運行。這篇文章主要為大家總結(jié)了Python中異常捕獲與處理的方法,需要的可以參考一下
    2023-04-04
  • 淺析python參數(shù)的知識點

    淺析python參數(shù)的知識點

    在本文里小編給大家分享的是關(guān)于python參數(shù)的知識點內(nèi)容,正在學習的讀者們跟著思考下吧。
    2018-12-12
  • python利用while求100內(nèi)的整數(shù)和方式

    python利用while求100內(nèi)的整數(shù)和方式

    這篇文章主要介紹了 python利用while求100內(nèi)的整數(shù)和方式,下面文章要描述的內(nèi)容有1到100的和、1到100內(nèi)的偶數(shù)和、1到100內(nèi)的奇數(shù)和,具體詳細內(nèi)容,需要的朋友可以參考一下
    2021-11-11
  • Appium自動化測試實現(xiàn)九宮格解鎖

    Appium自動化測試實現(xiàn)九宮格解鎖

    本文主要介紹了Appium自動化測試實現(xiàn)九宮格解鎖,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02

最新評論

宜阳县| 西林县| 白玉县| 冀州市| 云霄县| 九龙县| 遂溪县| 昌乐县| 新密市| 吉安市| 肇源县| 延寿县| 阿拉尔市| 香河县| 错那县| 香格里拉县| 永定县| 南和县| 海丰县| 东宁县| 龙州县| 昌图县| 昌宁县| 潜江市| 行唐县| 兰考县| 泽库县| 邓州市| 新竹市| 雅安市| 女性| 龙海市| 鄂尔多斯市| 广河县| 确山县| 永清县| 肥西县| 团风县| 黑水县| 葵青区| 丹阳市|