用 exec 和 eval 动态执行代码

exec 中,如果 globalslocals(即它们引用同一个对象),则执行代码就像它在模块级别一样。如果 globalslocals 是不同的对象,则执行代码就好像它在类体中一样

如果传入 globals 对象,但未指定 __builtins__ 键,则 Python 内置函数和名称将自动添加到全局范围。为了抑制执行范围内的 printisinstance 等功能的可用性,让 globals 将关键 __builtins__ 映射到值 None。但是,这不是安全功能。

不应使用 Python 2 特定语法; Python 3 语法将在 Python 2 中使用。因此,不推荐使用以下表单:<s>

  • exec object
  • exec object in globals
  • exec object in globals, locals