Python 內建函式 exec與 eval的差異

首頁 >> Research >> 程式設計 >> Python 內建函式 exec與 eval的差異

之前介紹過 Python 的函式入門

那屬於使用者自訂的函式,

其實 Python 內建有許多函式可用,

這就是今天要來談的主題

Python 內建函式 exec與 eval的差異

exec 與 eval 兩者非常的相似,
用法上也很雷同,
其後可以帶兩個以字典表示的廣域變數與區域變數作為參數
範例程式碼如下:

    “””eval 與 exec”””    a = 1    b = 2
    exec(‘print(int(a)+int(b))’, {‘a’: ‘2’, ‘b’: ‘3’})    print(a, b)    eval(‘print(int(a)+int(b))’, {‘a’: ‘4’, ‘b’: ‘5’})    print(a, b)
    print(exec(input(‘please enter :’)))    print(eval(input(‘please enter :’)))

使用 help() 分別查詢 exec與eval 兩者,
說明上大同小異

上面的範例程式執行的結果可以發現,
同樣執行 a+b 都不影響原本 a與b 的初始值
a = 1b = 2
那為何要多此一舉,
不直接寫 Python 的程式碼呢?
這是因為 exec與eval 兩者,
能夠以動態方式執行使用者自訂的程式碼,
若將範例程式碼寫成文字檔丟給 Python 程式讀取,
不就能達到動態修改並執行程式碼了,
不過相對的也造成了部分的安全性問題。

不過在範例程式中讓使用者輸入執行的運算時,
可以看到 exec 的執行結果為 None ,
這是由於 exec 並不回傳執行的結果,
而 eval 能將運算結果傳回,
這就是兩者很顯著的差異,
以上就是今天要介紹的主題

Python 內建函式 exec與 eval的差異



================================
分享與讚美,是我們繼續打拼的原動力.
若文章對您有幫助,望請不吝按讚或分享.
或者對影片有興趣可以訂閱頻道接收通知
================================
YouTube 頻道
FB 粉絲專頁
================================

guangyaw

重點主題: 程式設計: Python , Django,Android 工具與軟體: Open edX,Linux工具,Blender教學 分享各地美景與產品使用心得,遊戲實況,甚至影視戲劇等, 您的訂閱就是頻道成長的原動力。 YouTube 頻道: https://youtube.com/xyawli

You may also like...

發表迴響