之前介紹過 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 = 1
b = 2
那為何要多此一舉,
不直接寫 Python 的程式碼呢?
這是因為 exec與eval 兩者,
能夠以動態方式執行使用者自訂的程式碼,
若將範例程式碼寫成文字檔丟給 Python 程式讀取,
不就能達到動態修改並執行程式碼了,
不過相對的也造成了部分的安全性問題。
可以看到 exec 的執行結果為 None ,
這是由於 exec 並不回傳執行的結果,
而 eval 能將運算結果傳回,
這就是兩者很顯著的差異,
以上就是今天要介紹的主題
沒有留言:
張貼留言