濮阳杆衣贸易有限公司

主頁 > 知識庫 > python常量折疊基礎(chǔ)知識點講解

python常量折疊基礎(chǔ)知識點講解

熱門標簽:地圖地圖標注有嘆號 400電話申請資格 阿里電話機器人對話 電銷機器人系統(tǒng)廠家鄭州 正安縣地圖標注app 遼寧智能外呼系統(tǒng)需要多少錢 舉辦過冬奧會的城市地圖標注 螳螂科技外呼系統(tǒng)怎么用 qt百度地圖標注

1、概念

所謂常量折疊,指的是在編譯時就查找并計算常量表達式,而不是在運行時再對其進行計算,從而會使運行時更加精簡和快速。

2、實例

在 Python 中,我們可以使用反匯編模塊(Disassembler)獲取 CPython 字節(jié)碼,從而更好地了解代碼執(zhí)行的過程。

當(dāng)使用dis模塊反匯編上述常量表達式時,我們會得到以下字節(jié)碼:

>>> import dis
>>> dis.dis("day_sec = 24 * 60 * 60")
    0 LOAD_CONST        0 (86400)
    2 STORE_NAME        0 (day_sec)
    4 LOAD_CONST        1 (None)
    6 RETURN_VALUE

從字節(jié)碼中可以看出,它只有一個LOAD_CONST ,以及一個已經(jīng)計算好的值86400。

這表明 CPython 解釋器在解析和構(gòu)建抽象語法樹期間,會折疊常量表達式 24 * 60 * 60,并將其替換為計算值 86400。

知識點擴展:

常量折疊的外部細節(jié)

當(dāng)初,咱們將重點轉(zhuǎn)移到外部的實現(xiàn)細節(jié),即關(guān)注 CPython 在哪里以及如何實現(xiàn)常量折疊。

所有的 AST 優(yōu)化(包含常量折疊)都能夠在 ast_opt.c 文件中找到。根本的開始函數(shù)是 astfold_expr,它會折疊 Python 源碼中蘊含的所有表達式。

這個函數(shù)以遞歸形式遍歷 AST,并試著折疊每個常量表達式,如上面的代碼片段所示:

astfold_expr 在折疊某個表達式之前,會嘗試折疊其子表達式(操作對象),而后將折疊操作代理給特定的表達式折疊函數(shù)。

特定操作的折疊函數(shù)對表達式求值,并返回計算后的常數(shù),而后將其放入 AST 中。

例如,每當(dāng) astfold_expr 遇到二值運算時,它便調(diào)用 fold_binop,遞歸地計算兩個子操作對象(表達式) 。

fold_binop 函數(shù)返回計算后的常量值,如上面的代碼片段所示:

fold_binop 函數(shù)通過查看以后運算符的品種,而后調(diào)用其相應(yīng)的處理函數(shù)來折疊二值運算。例如,如果以后的操作是加法運算,為了計算最終值,它會對其左側(cè)和右側(cè)操作數(shù)調(diào)用 PyNumber_Add。

到此這篇關(guān)于python常量折疊基礎(chǔ)知識點講解的文章就介紹到這了,更多相關(guān)python常量折疊是什么內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • 舉例介紹Python中的25個隱藏特性
  • python 字符串的駐留機制及優(yōu)缺點
  • Python中常用的8種字符串操作方法
  • python學(xué)習(xí)字符串駐留與常量折疊隱藏特性詳解

標簽:昭通 阜新 隨州 合肥 淘寶好評回訪 興安盟 信陽 濟源

巨人網(wǎng)絡(luò)通訊聲明:本文標題《python常量折疊基礎(chǔ)知識點講解》,本文關(guān)鍵詞  python,常量,折疊,基礎(chǔ),知識點,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《python常量折疊基礎(chǔ)知識點講解》相關(guān)的同類信息!
  • 本頁收集關(guān)于python常量折疊基礎(chǔ)知識點講解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    蒲江县| 冀州市| 绥德县| 南安市| 当涂县| 敦化市| 陵水| 玛多县| 阜南县| 太仆寺旗| 改则县| 射阳县| 浪卡子县| 湖北省| 历史| 麻城市| 仁寿县| 高雄市| 正定县| 沾化县| 怀集县| 五常市| 沿河| 河南省| 台北县| 墨竹工卡县| 南昌县| 海城市| 保定市| 乌鲁木齐市| 罗城| 武宁县| 霍州市| 十堰市| 忻州市| 金门县| 读书| 历史| 正蓝旗| 勃利县| 灵山县|