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

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

 更新時間:2021年02月28日 14:53:07   作者:小妮淺淺  
在本篇文章里小編給大家整理的是一篇關(guān)于python常量折疊基礎(chǔ)知識點講解,對此有興趣的朋友可以跟著學(xué)習下。

1、概念

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

2、實例

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

當使用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é)

當初,咱們將重點轉(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 中。

例如,每當 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)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python list元素為tuple時的排序方法

    python list元素為tuple時的排序方法

    下面小編就為大家分享一篇python list元素為tuple時的排序方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • python3.6中@property裝飾器的使用方法示例

    python3.6中@property裝飾器的使用方法示例

    這篇文章主要介紹了python3.6中@property裝飾器的使用方法,結(jié)合實例形式分析了python3.6中@property裝飾器的功能、使用方法及相關(guān)操作注意事項,需要的朋友可以參考下
    2019-08-08
  • Python字符串格式化之使用format()方法

    Python字符串格式化之使用format()方法

    這篇文章主要介紹了Python字符串格式化之使用format()方法,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Django csrf 驗證問題的實現(xiàn)

    Django csrf 驗證問題的實現(xiàn)

    csrf是通過偽裝來自受信任用戶的請求來利用受信任的網(wǎng)站。這篇文章主要介紹了Django csrf 驗證問題的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-10-10
  • python xlwt模塊的使用解析

    python xlwt模塊的使用解析

    這篇文章主要介紹了python xlwt模塊的使用解析,幫助大家更好的理解和學(xué)習使用python,感興趣的朋友可以了解下
    2021-04-04
  • django之session與分頁(實例講解)

    django之session與分頁(實例講解)

    下面小編就為大家?guī)硪黄猟jango之session與分頁(實例講解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11
  • Python讀取csv文件實例解析

    Python讀取csv文件實例解析

    這篇文章主要介紹了Python讀取csv文件實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友可以參考下
    2019-12-12
  • 基于Python實現(xiàn)在線二維碼生成工具

    基于Python實現(xiàn)在線二維碼生成工具

    這篇文章將為大家展示如何通過純Python編程的方式,開發(fā)出一個網(wǎng)頁應(yīng)用—基于輸入的網(wǎng)址等文字內(nèi)容實現(xiàn)二維碼的生成,感興趣的可以學(xué)習一下
    2022-05-05
  • Python?多線程知識點總結(jié)及實例用法

    Python?多線程知識點總結(jié)及實例用法

    在本篇內(nèi)容里小編給大家整理了一篇關(guān)于Python?多線程知識點總結(jié)及實例用法,對想好學(xué)習PY的用戶非常友好,需要的參考下吧。
    2021-12-12
  • 基于python圖像處理API的使用示例

    基于python圖像處理API的使用示例

    這篇文章主要介紹了基于python圖像處理API的使用示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習或者工作具有一定的參考學(xué)習價值,需要的朋友們下面隨著小編來一起學(xué)習學(xué)習吧
    2020-04-04

最新評論