Python exec和eval方法使用注意,勿濫用

使用exec,eval函數,動態執行Python代碼片段

eval()函數

eval()函數執行一個Python字符串表達式,並能返回表達式結果

注意:該函數只能是單個表達式,不支持複雜的代碼邏輯,例如賦值操作、循環語句等

函數定義

eval(expression, globals, locals)

  • expression:必須,Python表達式字符串
  • globals:可選,dict結構,存放全局變量
  • locals:可選,dict結構,存放局部變量
  • 返回值:表達式執行結果

使用示例:

Python exec和eval方法使用注意,勿濫用

exec()函數

可以動態執行一段Python代碼,代碼段是可以非常複雜

在Python2中,exec是一個關鍵字語句,而在Python3中,exec變成了一個函數,跟print一樣
exec() 與 eval() 功能相似,三個參數含義和作用相近

函數定義

exec(object, globals, locals)

參數說明:

  • object:必選,Python代碼段字符串
  • globals:可選,dict結構,存放全局變量
  • locals:可選,dict結構,存放局部變量
  • exec函數沒有返回值
Python exec和eval方法使用注意,勿濫用

eval()與exec()區別

  • exec()第一個參數是代碼塊,而eval()是一個表達式字符串
  • eval()可以返回表達式的值,exec()執行返回值是None
  • eval()只能接一個單一字符串表達式,exec()可以是複雜的代碼邏輯

避免使用eval()、exec()

儘量避免使用eval()、exec(),使用該函數可能會引起“代碼注入”的安全問題

Python exec和eval方法使用注意,勿濫用

最後

如果內容有誤,歡迎評論區指正!

喜歡我的朋友們,麻煩點一波關注,謝謝!

Python exec和eval方法使用注意,勿濫用


分享到:


相關文章: