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

python學(xué)習(xí)字符串駐留與常量折疊隱藏特性詳解

 更新時(shí)間:2021年09月30日 16:21:28   作者:燕山588  
這篇文章主要為大家介紹了python學(xué)習(xí)中字符串駐留與常量折疊的一些隱藏特性,并給大家進(jìn)行了詳細(xì)分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助

下面是Python字符串的一些微妙的特性,絕對(duì)會(huì)讓你大吃一驚。

案例一:

案例二:

案例三:

很好理解, 對(duì)吧?

說(shuō)明:

這些行為是由于 Cpython 在編譯優(yōu)化時(shí), 某些情況下會(huì)嘗試使用已經(jīng)存在的不可變對(duì)象而不是每次都創(chuàng)建一個(gè)新對(duì)象. (這種行為被稱(chēng)作字符串的駐留[string interning])

發(fā)生駐留之后, 許多變量可能指向內(nèi)存中的相同字符串對(duì)象. (從而節(jié)省內(nèi)存)

在上面的代碼中, 字符串是隱式駐留的. 何時(shí)發(fā)生隱式駐留則取決于具體的實(shí)現(xiàn). 這里有一些方法可以用來(lái)猜測(cè)字符串是否會(huì)被駐留

所有長(zhǎng)度為 0 和長(zhǎng)度為 1 的字符串都被駐留.

字符串在編譯時(shí)被實(shí)現(xiàn) (‘wtf' 將被駐留, 但是 ‘'.join([‘w', ‘t', ‘f']) 將不會(huì)被駐留)

字符串中只包含字母,數(shù)字或下劃線(xiàn)時(shí)將會(huì)駐留. 所以 ‘wtf!' 由于包含 ! 而未被駐留. 可以在【地址1】找到 CPython 對(duì)此規(guī)則的實(shí)現(xiàn).

當(dāng)在同一行將 a 和 b 的值設(shè)置為 “wtf!” 的時(shí)候, Python 解釋器會(huì)創(chuàng)建一個(gè)新對(duì)象, 然后同時(shí)引用第二個(gè)變量(譯: 僅適用于3.7以下, 詳細(xì)情況請(qǐng)看【地址2】). 如果你在不同的行上進(jìn)行賦值操作, 它就不會(huì)“知道”已經(jīng)有一個(gè) wtf!對(duì)象 (因?yàn)?“wtf!” 不是按照上面提到的方式被隱式駐留的). 它是一種編譯器優(yōu)化, 特別適用于交互式環(huán)境.\

常量折疊(constant folding) 是 Python 中的一種 窺孔優(yōu)化(peephole optimization) 技術(shù). 這意味著在編譯時(shí)表達(dá)式 ‘a(chǎn)'*20會(huì)被替換為 ‘a(chǎn)aaaaaaaaaaaaaaaaaaa' 以減少運(yùn)行時(shí)的時(shí)鐘周期. 只有長(zhǎng)度小于 20 的字符串才會(huì)發(fā)生常量折疊. (為啥? 想象一下由于表達(dá)式 ‘a(chǎn)'*10**10 而生成的 .pyc 文件的大小). 相關(guān)的源碼實(shí)現(xiàn)在【地址3】.

如果你是使用 3.7 版本中運(yùn)行上述示例代碼, 會(huì)發(fā)現(xiàn)部分代碼的運(yùn)行結(jié)果與注釋說(shuō)明相同. 這是因?yàn)樵?3.7 版本中, 常量折疊已經(jīng)從窺孔優(yōu)化器遷移至新的 AST 優(yōu)化器, 后者可以以更高的一致性來(lái)執(zhí)行優(yōu)化. (由 Eugene Toder 和 INADA Naoki 在 bpo-29469 和 bpo-11549 中貢獻(xiàn).)

(譯: 但是在最新的 3.8 版本中, 結(jié)果又變回去了. 雖然 3.8 版本和 3.7 版本一樣, 都是使用 AST 優(yōu)化器. 目前不確定官方對(duì) 3.8 版本的 AST 做了什么調(diào)整.)

以上就是python學(xué)習(xí)字符串駐留與常量折疊隱藏特性詳解的詳細(xì)內(nèi)容,更多關(guān)于python隱藏特的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 詳解Python如何批量采集京東商品數(shù)據(jù)流程

    詳解Python如何批量采集京東商品數(shù)據(jù)流程

    這不快過(guò)年了,又是要買(mǎi)年貨,又是要給女朋友買(mǎi)禮物的,分析一下價(jià)格,看看哪些是真的降價(jià)了
    2022-01-01
  • python開(kāi)發(fā)之IDEL(Python GUI)的使用方法圖文詳解

    python開(kāi)發(fā)之IDEL(Python GUI)的使用方法圖文詳解

    這篇文章主要介紹了python開(kāi)發(fā)之IDEL(Python GUI)的使用方法,結(jié)合圖文形式較為詳細(xì)的分析總結(jié)了Python GUI的具體使用方法,需要的朋友可以參考下
    2015-11-11
  • Python自動(dòng)化運(yùn)維_文件內(nèi)容差異對(duì)比分析

    Python自動(dòng)化運(yùn)維_文件內(nèi)容差異對(duì)比分析

    下面小編就為大家分享一篇Python自動(dòng)化運(yùn)維_文件內(nèi)容差異對(duì)比分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-12-12
  • python變量賦值機(jī)制踩坑記錄

    python變量賦值機(jī)制踩坑記錄

    這篇文章主要介紹了python變量賦值機(jī)制踩坑記錄,我們都知道python有深拷貝和淺拷貝,但變量賦值又是什么機(jī)制呢?這是個(gè)容易被忽略卻又極易踩坑的點(diǎn),下面我們來(lái)一探究竟,需要的朋友可以參考一下
    2022-02-02
  • Django admin實(shí)現(xiàn)TextField字段changelist頁(yè)面換行、空格正常顯示

    Django admin實(shí)現(xiàn)TextField字段changelist頁(yè)面換行、空格正常顯示

    本文主要介紹了Django admin實(shí)現(xiàn)TextField字段changelist頁(yè)面換行、空格正常顯示,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 用Cython加速Python到“起飛”(推薦)

    用Cython加速Python到“起飛”(推薦)

    這篇文章主要介紹了用Cython加速Python到“起飛”,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Python自定義logger模塊的實(shí)例代碼

    Python自定義logger模塊的實(shí)例代碼

    Python標(biāo)準(zhǔn)庫(kù)中的logging模塊提供了日志記錄的功能,自定義 Logger 可以根據(jù)項(xiàng)目的需求定制化日志記錄,滿(mǎn)足特定的日志記錄格式、輸出目標(biāo)和日志級(jí)別等要求,本文給大家介紹了Python自定義logger模塊的實(shí)例代碼,需要的朋友可以參考下
    2024-02-02
  • Python+OpenCV之形態(tài)學(xué)操作詳解

    Python+OpenCV之形態(tài)學(xué)操作詳解

    這篇文章主要為大家詳細(xì)介紹了Python?OpenCV中的形態(tài)學(xué)操作(開(kāi)運(yùn)算、閉運(yùn)算)的實(shí)現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-09-09
  • python中join與os.path.join()函數(shù)實(shí)例詳解

    python中join與os.path.join()函數(shù)實(shí)例詳解

    os.path.join()函數(shù)用于路徑拼接文件路徑,下面這篇文章主要給大家介紹了關(guān)于python中join與os.path.join()函數(shù)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-03-03
  • 如何使用Python基于接口編程的方法實(shí)現(xiàn)

    如何使用Python基于接口編程的方法實(shí)現(xiàn)

    本文主要介紹了如何使用Python基于接口編程,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11

最新評(píng)論