Python中的exec()2025年1月5日 | 阅读6分钟 引言在本教程中,我们将学习 Python 中的 exec() 函数。exec() 函数用于动态执行 Python 程序,该程序可以是字符串或代码对象。如果它是字符串,字符串将被分割成一系列 Python 语句,然后执行,除非发生语法错误。我们必须注意不要在函数定义之外使用 return 语句,甚至不要在传递给 exec() 函数的代码的上下文中这样做。它不返回任何值,因此返回 None。如果您知道如何使用强大的 Python exec() 内置函数,那么没有任何限制。Python exec() 与 eval() 类似;唯一的区别是 exec() 可以接受多个数字而不是传递一个表达式,而 eval() 不能。 语法 Python 中 exec() 函数的语法如下所示 - 参数 Python 中 exec() 函数的参数如下所示 -
返回值 Python 中 exec() 函数的返回值如下所示 -
程序代码 在此程序代码中,我们可以看到使用 exec() 函数在 Python 中进行动态执行。为了说明 Python 中良好处理的概念,它表明动态执行包含在对象中的代码是可能的。代码现在如下所示 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: The product of the 2 and 10 is 20 程序代码 在使用 exec() 的方法之前,您需要记住 exec() 支持的所有函数。我们可以使用 dir() 函数来查看这一点。在此程序代码中,我们可以看到 Python 中的一个好函数,因为 dir() 函数在 exec() 函数中执行,这表明了 Python 中动态执行的概念。代码现在如下所示 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: ['Random', 'SystemRandom', '__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'betavariate', 'choice', 'choices', 'expovariate', 'gammavariate', 'gauss', 'getrandbits', 'getstate', 'lognormvariate', 'normalvariate', 'paretovariate', 'randbytes', 'randint', 'random', 'randrange', 'sample', 'seed', 'setstate', 'shuffle', 'triangular', 'uniform', 'vonmisesvariate', 'weibullvariate'] 程序代码 exec() 方法可用于执行用户动态输入的代码。这非常危险,因为用户可以在您的环境中运行任何代码。因此,在要求用户将字符串或代码对象输入到 exec() 函数时要小心。代码如下所示 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: Write a Python code here: [print(i*5) for i in range(0,9)] 0 5 10 15 20 25 30 35 40 程序代码 Python 允许我们通过使用全局和局部参数来限制许多变量和方法的用法,但我们可能不需要这样做。这些局部和全局参数用于局部或全局转换(仅限字典)。如果缺少局部参数,则会替换全局参数。这意味着全局参数可以在两种情况下使用。让我们看看代码如何仅传递全局参数。代码如下所示 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: ['__builtins__'] 因此,我们看到当我们在上面的代码中将一个空字典作为全局参数传递时,它只返回 __builtins__,而没有其他数学事件发生,如上一个示例所示。这意味着对象不仅仅支持 __builtins__。这意味着所有其他函数都限于此对象。 程序代码 在此,我们提供另一个 Python exec() 函数的程序代码。代码如下所示 - 输出 上面的程序代码应该打印 720 作为输出,但它显示“无输出”并引发异常。即使我们传递了阶乘数,由于我们通过传递全局参数设置了限制,factorial() 方法也无法工作。 程序代码 我们可以允许执行各种函数的某些任务。例如,我们想阻止除 factorial() 函数之外的所有其他数学模块。下面是一个 Python exec() 函数的示例 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: 3628800 程序代码 预定义的函数名也可以在执行开始时分配给引用列表。我们可以将函数名从 factorial() 更改为用户定义的 f()。代码如下所示 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: 3628800 程序代码 在这种情况下,通过传递全局和局部参数,我们可以根据我们的特定需求自定义可执行代码的行为,并演示 Python 中动态执行的通用性。代码如下所示 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: ['i', 's'] 程序代码 Python 中的动态执行允许执行特定的方法,如 sum() 和 iter(),以及在 exec() 函数中创建的例程,从而使在 Python 中轻松执行良好。通过这种方式,所有内置方法都可以通过 exec() 函数完成,只需 sum 和 iter 方法。我们也可以像下面的代码一样限制 __builtins__ 的使用 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: ['dir', 'print', 'sum'] 程序代码 在这里,我们翻译全局字典和局部映射对象。在下面的程序代码中,在 floor() 方法中无法使用变量 "a" 和 "num" 来访问 "object"。所有其他函数和方法都将不可用。代码如下所示 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: 70 程序代码 Python 提供了一个 exec() 函数,可帮助程序员将 Python 代码块解析为参数并重复执行值。输出如下所示 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: 0 1 2 3 4 5 6 7 8 The Programming in Python False 程序代码 在此,我们提供一个使用 Python exec() 函数传递字符串的程序代码。代码如下所示 - 输出 现在,我们在 Python 中编译上述代码,成功编译后运行它。输出如下: Hello coders Sum: 10 False 5.0 结论在本教程中,我们将学习 Python 中的 exec() 函数。Python exec() 内置函数用于动态执行传递给函数的 Python 程序,该程序可以是字符串或代码对象。根据 Python exec() 函数,整个代码块可以动态地解析为字符串或参数。此函数将执行一个代码块,并根据定义的 Python 语句返回一个值。在此,我们共享 Python 中 exec() 函数的语法、参数和返回值。我们还将从本教程中学习 exec() 函数的一些程序代码。 下一个主题Python finally 关键字 |
? 简介:在本教程中,我们将学习 Python 中的默认值。Python 允许函数具有默认值。如果您在调用函数时未提供参数,则参数将采用其默认值。Python 语言有许多方法可以为函数参数表达语法和值……
7 分钟阅读
Python Match Case 语句 Python match case 语句提供了一种动态的模式匹配解决方案。它允许根据表达式的不同值使用不同的操作。以前,Python Match Case 语句的替代方案是使用 if-elif-else 条件,但它们是...
7 分钟阅读
什么是加密?加密是将数据转换为密文或加密文本的过程。简单来说,加密是编码数据的过程。加密密钥是完成加密过程所必需的。什么是解密?解密是将加密或...
阅读 4 分钟
?变量:变量用于存储值。简单来说,变量是可以变化的值。您可以在变量中存储任何类型的数据。变量也是内存中存储信息的一部分。定义变量有一些规则...
5 分钟阅读
在不断发展的 Web 开发领域,构建健壮的 API 是一项关键技能。Flask,一个轻量级且通用的 Python Web 框架,可以轻松创建可以处理各种任务的 API。API 开发的一个基本方面是返回...的能力。
7 分钟阅读
ChromaDB 是最先进的开源向量数据库,针对嵌入式数据的 I/O 和管理进行了优化。嵌入式数据是通过机器学习技术获得的数值实体,有助于对文本、图像或...
阅读 6 分钟
对于这个问题,我们需要编写一个幂函数。我们将得到两个数字,n 和 x,我们需要计算 x ^ n。在这个问题中,我们不需要使用模运算,因为我们假设...
阅读 8 分钟
简介 Python 函数 shutil.move() 可以在不同位置之间传输文件或目录。它是 shutil 模块的一个组件,该模块提供了一系列文件操作。此方法需要两个参数:要传输的文件或目录的源路径...
阅读 3 分钟
LZMA 压缩算法简介:在数据压缩领域,LZMA 算法作为一种高效且常用的方法脱颖而出,用于在保持原始内容的同时减小文件大小。LZMA,即 Lempel-Ziv-Markov chain Algorithm,是一种高性能的压缩方法,以其...而闻名。
阅读 3 分钟
引言:随机游走,有时也称为随机过程,是一种描述在数学空间(如整数)上进行的一系列随机步骤的旅程的数学对象。整数直线上的随机游走是...
阅读 4 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India