91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python中字符串駐留與常量折疊隱藏特性是怎樣的

發布時間:2021-10-08 10:03:06 來源:億速云 閱讀:102 作者:柒染 欄目:開發技術

python中字符串駐留與常量折疊隱藏特性是怎樣的,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

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

案例一:

python中字符串駐留與常量折疊隱藏特性是怎樣的

案例二:

python中字符串駐留與常量折疊隱藏特性是怎樣的

案例三:

python中字符串駐留與常量折疊隱藏特性是怎樣的

很好理解, 對吧?

說明:

這些行為是由于 Cpython 在編譯優化時, 某些情況下會嘗試使用已經存在的不可變對象而不是每次都創建一個新對象. (這種行為被稱作字符串的駐留[string interning])

發生駐留之后, 許多變量可能指向內存中的相同字符串對象. (從而節省內存)

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

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

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

字符串中只包含字母,數字或下劃線時將會駐留. 所以 ‘wtf!' 由于包含 ! 而未被駐留. 可以在【地址1】找到 CPython 對此規則的實現.

python中字符串駐留與常量折疊隱藏特性是怎樣的

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

常量折疊(constant folding) 是 Python 中的一種 窺孔優化(peephole optimization) 技術. 這意味著在編譯時表達式 ‘a'*20會被替換為 ‘aaaaaaaaaaaaaaaaaaaa' 以減少運行時的時鐘周期. 只有長度小于 20 的字符串才會發生常量折疊. (為啥? 想象一下由于表達式 ‘a'*10**10 而生成的 .pyc 文件的大小). 

如果你是使用 3.7 版本中運行上述示例代碼, 會發現部分代碼的運行結果與注釋說明相同. 這是因為在 3.7 版本中, 常量折疊已經從窺孔優化器遷移至新的 AST 優化器, 后者可以以更高的一致性來執行優化. (由 Eugene Toder 和 INADA Naoki 在 bpo-29469 和 bpo-11549 中貢獻.)

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

文登市| 靖江市| 陕西省| 惠州市| 青铜峡市| 延安市| 阿坝县| 高雄县| 石林| 通道| 遂平县| 施秉县| 高要市| 沈阳市| 盐源县| 将乐县| 靖州| 扎赉特旗| 沁阳市| 常德市| 旬阳县| 和平区| 清远市| 慈利县| 淮滨县| 柘城县| 柳江县| 巴东县| 安福县| 湖州市| 建德市| 分宜县| 南雄市| 双辽市| 克什克腾旗| 会东县| 萍乡市| 伊宁县| 汉寿县| 敦煌市| 高安市|