如何在Python中执行一个包含代码的字符串

340 阅读3分钟

在这个快速教程中,我们将展示如何在Python和Jupyter中执行包含Python代码的字符串

换句话说,我们将从另一个Python代码中动态地运行Python代码。我们将首先研究用语句执行代码,然后是用表达式执行代码,最后我们将介绍Jupyter Notebooks。

第一步:在Python中执行一个字符串语句

我们可以使用方法exec执行Python代码中存储为字符串的语句

下面我们可以看到在Python中用exec() ,将字符串作为代码执行的简单例子。

some_code = 'print ("Hello World!")'
exec(some_code)

其结果是打印出来的。

Hello World!

关于方法exec() 的更多信息可以在官方文档中找到:exec - 内置函数

该方法被描述为。

这个函数支持Python代码的动态执行。对象必须是一个字符串或一个代码对象。如果是一个字符串,该字符串被解析为一套Python语句,然后被执行(除非发生语法错误)。

该方法的参数exec

  • object - 一个字符串或一个代码对象
  • globals (可选) - 一个字典
  • locals (可选)--一个映射对象

globalslocals 参数允许用户指定哪些全局和局部函数/变量是可用的。

注意。

执行或评估在某些情况下可能是危险的。只有当你确定你在做什么时才使用它。

第2步:在Python中执行一个字符串表达式

要执行包含Python表达式的字符串,我们可以使用方法--eval方法eval 将包含表达式的字符串作为Python代码进行评估

x = 1
eval('x+1')

结果。

2

官方文档可以在这个链接上找到:eval - 内置函数

该方法被描述为。

使用 globals 和 locals 字典作为全局和局部命名空间,对表达式参数进行解析并作为 Python 表达式(技术上讲,是一个条件列表)进行评估。

注意。

`eval'和`exec'之间的区别是 - `eval('x=2')` - 返回一个错误,而`exec('x=2')`工作正常。

步骤3:在Jupyter笔记本中执行一个字符串代码

如果你需要在Jupyter Notebook中动态地执行由字符串评估的Python代码,我们可以使用同样的方法。

  • exec
  • eval

都可以从另一个文件或Jupyter Notebook中读取代码并执行它。

x = 1
eval('x+1')

结果。

2

第4步:在Python中执行一个多行字符串代码

最后让我们看看在简单的例子中,我们如何用方法exec 来执行多行字符串作为Python代码。

some_code = """
x = 0
if x == False :
    print("x Is False")
else :
    print("x Is True")
"""
exec(some_code)

结果被打印在Python控制台。

x Is False

结论

在这篇文章中,我们研究了作为Python代码执行和评估字符串表达式或语句的不同方案。

在这些代码例子中,我们着重于执行,但是评估也是非常相似和简单的。