用 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