當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python eval用法及代碼示例


用法:

eval(expression[, globals[, locals]])

參數是字符串和可選的全局變量和局部變量。如果提供,globals 必須是字典。如果提供,locals 可以是任何映射對象。

expression 參數被解析和評估為 Python 表達式(技術上講,條件列表),使用 globalslocals 字典作為全局和本地命名空間。如果存在 globals 字典並且不包含鍵 __builtins__ 的值,則在解析 expression 之前,在該鍵下插入對內置模塊 builtins 的字典的引用。這樣,您可以通過將自己的 __builtins__ 字典插入到 globals 中,然後再將其傳遞給 eval() 來控製哪些內置函數可用於執行的代碼。如果省略 locals 字典,則默認為 globals 字典。如果省略兩個字典,則在調用eval() 的環境中使用globalslocals 執行表達式。請注意,eval() 無權訪問封閉環境中的嵌套範圍(非本地)。

返回值是計算表達式的結果。語法錯誤被報告為異常。例子:

>>> x = 1
>>> eval('x+1')
2

此函數還可用於執行任意代碼對象(例如由 compile() 創建的代碼對象)。在這種情況下,傳遞一個代碼對象而不是一個字符串。如果代碼對象已使用 'exec' 作為 mode 參數進行編譯,則 eval() 的返回值將為 None

提示:exec() 函數支持動態執行語句。 globals()locals() 函數分別返回當前的全局和本地字典,這對於傳遞以供 eval()exec() 使用可能很有用。

如果給定的源是一個字符串,那麽前導和尾隨空格和製表符將被去除。

請參閱ast.literal_eval(),了解可以使用僅包含文字的表達式安全地評估字符串的函數。

使用代碼對象作為參數引發審計事件exec。也可能引發代碼編譯事件。

相關用法


注:本文由純淨天空篩選整理自python.org大神的英文原創作品 eval。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。