首页 >后端开发 >Python教程 >Python 的 `eval`、`exec` 和 `compile` 函数有什么区别?

Python 的 `eval`、`exec` 和 `compile` 函数有什么区别?

Patricia Arquette
Patricia Arquette原创
2024-12-11 18:17:10645浏览

What are the Differences Between Python's `eval`, `exec`, and `compile` Functions?

eval、exec 和compile 之间的区别

简介

Python 提供了三个用于动态执行代码的强大工具:eval、exec 和compile 。每个都有特定的用途,了解它们的差异非常重要。

eval

Eval 用于计算单个表达式。它采用表示表达式的字符串并返回其值。例如:

a = 5
result = eval('a + 10')
print(result)  # Output: 15

exec

Exec 用于执行一段代码。它采用一个表示代码的字符串并返回 None。例如:

my_code = """
for i in range(5):
    print(i)
"""

exec(my_code)
# Output:
# 0
# 1
# 2
# 3
# 4

compile

Compile 用于将代码编译为字节码,然后由解释器执行。它采用表示代码的字符串和模式(“eval”、“exec”或“single”)。

在“eval”模式下,compile 将单个表达式编译为返回表达式值的字节码。在“exec”模式下,它将代码块编译为返回 None 的字节码。在“单一”模式下,它将单个语句或表达式编译为字节码,并打印表达式值的表示。

例如:

bytecode = compile('a + 10', 'my_code', 'eval')
result = eval(bytecode)
print(result)  # Output: 15

bytecode = compile("""
for i in range(5):
    print(i)
""", 'my_code', 'exec')
exec(bytecode)
# Output:
# 0
# 1
# 2
# 3
# 4

摘要

Function What it does
eval Evaluates a single expression
exec Executes a block of code
compile Compiles code into bytecode

以上是Python 的 `eval`、`exec` 和 `compile` 函数有什么区别?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn