Python 可执行对象
eval/repr
eval
eval 可以執行字符串類型的表達式 (或 compile() 創建的代碼對象(code object) ) 并返回執行結果
eval(expression, globals=None, locals=None)expression 參數會作為一個 Python 表達式被解析并求值globals 和 locals 作為全局和局部命名空間,globals 實參必須是一個字典,locals 可以是任何映射對象。
默認為當前環境,如果只給了 globals,則默認 locals 與 globals 相同
repr
返回一個對象的字符串形式返回值,通過這個字符串可以重新獲取該對象,因為對于許多對象類型 eval(repr(obj)) == obj成立類可以通過定義__repr__()方法來控制此函數為它的實例所返回的內容
exec
exec 支持動態執行 Python 代碼,返回值是 None
#Python學習交流QQ群:778463939 exec(object, globals=None, locals=None)object 為字符串時,會被解析成 Python 語句執行,為代碼對象時會被直接執行globals 和 locals 作為全局和局部命名空間,globals 實參必須是一個字典,locals 可以是任何映射對象。
默認為當前環境
compile
compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)將 source 編譯成代碼或 AST 對象。代碼對象可以被 exec() 或 eval() 執行。source 可以是常規的字符串、字節字符串,或者 AST 對象。
filename 實參需要是代碼讀取的文件名mode 指定了編譯代碼用的模式。如果 source 是語句序列,可以是 ‘exec’,使用 eval() 返回值是 None ;如果是單一表達式,可以是 ‘eval’;如果是單個交互式語句,可以是 ‘single’。(在最后一種情況下,如果表達式執行結果不是 None 將會被打印出來。)
總結
以上是生活随笔為你收集整理的Python 可执行对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python函数的动态参数
- 下一篇: Python的深copy和浅copy