python内置函数exec使用方法

  • Post category:Python

当我们需要在 Python 中运行一个字符串形式的代码时,可以使用内置函数 exec

语法

exec 函数的语法如下:

exec(object[, globals[, locals]])

其中,object 参数是待执行的代码字符串。可选参数 globalslocals 表示代码执行时的全局命名空间和局部命名空间,如果不指定,则使用当前作用域的命名空间。

实例

示例一

下面是一个简单的示例,把一个字符串当成代码执行:

code = """
for i in range(5):
    print(i, end=' ')
"""
exec(code)

输出:

0 1 2 3 4 

在上述示例中,我们将字符串 "for i in range(5):\n print(i, end=' ')" 赋值给了 code 变量,并将其作为代码字符串传递给 exec 函数。函数执行后,会按照 code 变量中定义的循环代码输出结果。

示例二

下面是另一个示例,该示例使用了 globalslocals 参数。

s = "print(x)"
exec(s, {'x': 123})

输出:

123

在上述示例中,我们将字符串 "print(x)" 赋值给了变量 s,并将 x: 123 作为字典传递给 exec 函数的 globals 参数。此时,在 s 字符串中对 x 的引用会从全局命名空间中查找,而查找的结果就是 123。因此,执行 exec(s, {'x': 123}) 后,会输出 123

注意事项

使用 exec 函数时需要注意以下几点:

  • exec 接收一个字符串作为参数,并以这个字符串作为脚本进行解释执行。
  • exec 函数不会返回任何值,返回值为 None
  • exec 函数会影响该块的命名空间,可以修改该块数据。
  • 使用 exec 函数需要谨慎,因为它可以执行任意代码,可能存在安全性问题。