Python 中的函数exec()允许我们从字符串执行 Python 代码块。当我们需要运行动态生成的 Python 代码时,Python 中的这个内置函数可以派上用场,但建议不要粗心使用,因为它会带来一些安全风险。
在本教程中,我们将学习
如何使用 Python 的exec()函数
如何使用带有代码示例的exec()函数执行 Python 代码
从字符串和 Python 源文件执行 Python 代码
使用globals和locals参数
Python 的 exec() 函数
Python 的exec()函数允许我们执行任何一段 Python 代码,无论该代码有多大或多小。这个函数帮助我们执行动态生成的代码。
想象一个 Python 解释器获取一段代码,在内部处理它并执行它,exec()函数做同样的事情。它就像一个独立的 python 解释器。
exec ()能够执行简单的 Python 程序以及功能齐全的 Python 程序。它可以执行函数调用和定义、类定义和实例化、导入等等。
句法
exec(object [ , globals [ , locals]])
object- 它必须是字符串或代码对象。如果它是一个字符串,它将被解析为一组 Python 语句,除非发生语法错误,否则将执行这些语句。如果它是一个代码对象,那么它将简单地执行。
globals和locals- 这允许我们提供代表全局和本地命名空间的字典。
返回值
exec()函数的返回值为None。可能是因为每段代码都没有最终的结果。
初见
这是对exec()函数工作原理的初步了解。
obj = [“apple”, “cherry”, “melon”, “strawberry”]
code = “print([sliced[:4] for sliced in obj if ‘a’ not in sliced])”
exec(code)
…
[‘cher’, ‘melo’]
另一个使用exec()函数的例子
The code will continuously run and we can run our code as we do in
Python interpreter
while True:
exec(input(">>> "))
print(“Welcome to GeekPython”)
Welcome to GeekPython
import numpy as np
print(np.random.randint(16, size=(2, 4)))
[[11 13 3 13]
[ 7 6 15 5]]
x = [“apple”, “banana”, “cherry”, “mango”]
print([fruit for fruit in x if “a” not in fruit])
[‘cherry’]
它的行为完全像 Python 解释器,它获取我们的代码,在内部处理它,执行它,并返回正确的结果。
我们正在运行一个无限循环,在其中,我们在命令行中获取用户的输入,并执行我