五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動(dòng)態(tài)

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

發(fā)布日期:2021-12-29 04:17 | 文章來源:源碼中國

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

案例一:

案例二:

案例三:

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

說明:

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

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

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

所有長度為 0 和長度為 1 的字符串都被駐留.

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

字符串中只包含字母,數(shù)字或下劃線時(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í)鐘周期. 只有長度小于 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é)果與注釋說明相同. 這是因?yàn)樵?3.7 版本中, 常量折疊已經(jīng)從窺孔優(yōu)化器遷移至新的 AST 優(yōu)化器, 后者可以以更高的一致性來執(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)文章!

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。

相關(guān)文章

實(shí)時(shí)開通

自選配置、實(shí)時(shí)開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對(duì)1客戶咨詢顧問

在線
客服

在線客服:7*24小時(shí)在線

客服
熱線

400-630-3752
7*24小時(shí)客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部