用 exec 和 eval 動態執行程式碼
在 exec
中,如果 globals
是 locals
(即它們引用同一個物件),則執行程式碼就像它在模組級別一樣。如果 globals
和 locals
是不同的物件,則執行程式碼就好像它在類體中一樣。
如果傳入 globals
物件,但未指定 __builtins__
鍵,則 Python 內建函式和名稱將自動新增到全域性範圍。為了抑制執行範圍內的 print
或 isinstance
等功能的可用性,讓 globals
將關鍵 __builtins__
對映到值 None
。但是,這不是安全功能。
不應使用 Python 2 特定語法; Python 3 語法將在 Python 2 中使用。因此,不推薦使用以下表單:<s>
exec object
exec object in globals
exec object in globals, locals