色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

python常量折疊基礎知識點講解

瀏覽:29日期:2022-06-26 18:25:33
1、概念

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

2、實例

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

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

>>> import dis>>> dis.dis('day_sec = 24 * 60 * 60') 0 LOAD_CONST0 (86400) 2 STORE_NAME0 (day_sec) 4 LOAD_CONST1 (None) 6 RETURN_VALUE

從字節碼中可以看出,它只有一個LOAD_CONST ,以及一個已經計算好的值86400。

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

知識點擴展:

常量折疊的外部細節

當初,咱們將重點轉移到外部的實現細節,即關注 CPython 在哪里以及如何實現常量折疊。

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

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

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

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

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

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

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

到此這篇關于python常量折疊基礎知識點講解的文章就介紹到這了,更多相關python常量折疊是什么內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 中文字幕咪咪网 | 草草久久97超级碰碰碰免费 | 男人的天堂在线观看免费 | 日本亚欧乱色视频在线网站 | 日韩免费观看一级毛片看看 | 国产欧美综合精品一区二区 | 午夜影院亚洲 | 91视频一区 | 毛片手机在线视频免费观看 | 九九热视频精品在线观看 | 国语精品视频在线观看不卡 | 91久久精品国产91久久性色也 | 一级做a爰片久久毛片 | 久久频这里精品香蕉久久 | 在线观看国产区 | 久夜色精品国产一区二区三区 | 全部免费国产潢色一级 | 亚洲情a成黄在线观看动 | 日韩午夜在线观看 | 99国产成人高清在线视频 | 中日毛片| 69成人免费视频 | 免费萌白酱国产一区二区三区 | 九九99九九在线精品视频 | 亚洲欧美在线综合一区二区三区 | 成人免费网站在线观看 | 美女在线看永久免费网址 | 欧美色大成网站www永久男同 | 欧美日韩视频一区二区三区 | 色综合久久久久久久 | 亚洲综合第一欧美日韩中文 | 国产亚洲一区二区三区 | 国产91网址 | 日本精品久久 | 99爱视频在线 | 国产欧美日韩高清专区手机版 | 成人做爰视频www片 成人做爰视频www视频 | 情侣自拍啪啪 | 欧美成人免费大片888 | 中文字幕在线乱码不卡区区 | 久久久久国产精品 |