使用exec,eval函數,動態執行Python代碼片段
eval()函數
eval()函數執行一個Python字符串表達式,並能返回表達式結果
注意:該函數只能是單個表達式,不支持複雜的代碼邏輯,例如賦值操作、循環語句等
函數定義:
eval(expression, globals, locals)
- expression:必須,Python表達式字符串
- globals:可選,dict結構,存放全局變量
- locals:可選,dict結構,存放局部變量
- 返回值:表達式執行結果
使用示例:
exec()函數
可以動態執行一段Python代碼,代碼段是可以非常複雜
在Python2中,exec是一個關鍵字語句,而在Python3中,exec變成了一個函數,跟print一樣
exec() 與 eval() 功能相似,三個參數含義和作用相近
函數定義:
exec(object, globals, locals)
參數說明:
- object:必選,Python代碼段字符串
- globals:可選,dict結構,存放全局變量
- locals:可選,dict結構,存放局部變量
- exec函數沒有返回值
eval()與exec()區別
- exec()第一個參數是代碼塊,而eval()是一個表達式字符串
- eval()可以返回表達式的值,exec()執行返回值是None
- eval()只能接一個單一字符串表達式,exec()可以是複雜的代碼邏輯
避免使用eval()、exec()
儘量避免使用eval()、exec(),使用該函數可能會引起“代碼注入”的安全問題
最後
如果內容有誤,歡迎評論區指正!
喜歡我的朋友們,麻煩點一波關注,謝謝!
閱讀更多 雷那編程 的文章