使用 Python 的 exec() 动态生成代码

本文详细介绍了Python的exec()函数,展示了如何使用exec()动态执行Python代码,包括从字符串、源文件执行,以及使用globals和locals参数。文中通过多个示例探讨了exec()的安全性和限制方法的使用。
摘要由CSDN通过智能技术生成

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 解释器,它获取我们的代码,在内部处理它,执行它,并返回正确的结果。

我们正在运行一个无限循环,在其中,我们在命令行中获取用户的输入,并执行我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Q shen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值