X Tutup
Skip to content

Latest commit

 

History

History
146 lines (113 loc) · 3.72 KB

File metadata and controls

146 lines (113 loc) · 3.72 KB
title Python exec() 内置函数 - Python 速查表
description 此函数支持动态执行 Python 代码。object 必须是字符串或代码对象。如果是字符串,则将其解析为 Python 语句套件并执行(除非发生语法错误)[...]。
Python exec() 内置函数 来自 Python 3 文档 此函数支持动态执行 Python 代码。object 必须是字符串或代码对象。如果它是一个字符串,该字符串将被解析为一组 Python 语句,然后被执行(除非发生语法错误)[...]。

简介

Python 中的 exec() 函数是一个内置函数,它允许您动态执行存储在字符串中的 Python 代码。这对于您希望执行用户提供的代码、在运行时生成和运行代码,甚至在应用程序中构建迷你解释器或脚本环境的场景非常强大。但是,应谨慎使用,因为它如果处理不当,可能会引入安全风险。

语法

exec(object[, globals[, locals]])
  • object: 包含要执行的 Python 代码的字符串。
  • globals (可选): 表示全局命名空间的字典。如果未提供,则使用当前的全局命名空间。
  • locals (可选): 表示局部命名空间的字典。如果未提供,则使用当前的局部命名空间。

基本用法

code_to_execute = "print('Hello, exec()!')"
exec(code_to_execute)
Hello, exec()!

exec() 函数也可以与 print() 函数一起使用,将输出显示到控制台。

执行多条语句

code = """
for i in range(5):
    print(i)
"""
exec(code)
0
1
2
3
4

在此示例中,exec() 函数用于执行一个 for 循环,该循环迭代一个数字的 range 并将每个数字 打印 到控制台。

修改变量

x = 10
code = "x += 5"
exec(code)
print(x)
15

使用 globalslocals

x = 5
code = "x = x * 2"
globals_dict = {"x": 10}
locals_dict = {"x": 20}
exec(code, globals_dict, locals_dict)
print(x)
print(globals_dict)
print(locals_dict)
5
{'x': 10}
{'x': 40}

动态函数创建

def create_dynamic_function(name, args):
    code = f"def {name}({', '.join(args)}): return sum({args})"
    exec(code)

create_dynamic_function("add_numbers", ["a", "b", "c"])
result = add_numbers(2, 3, 5)
print(result)
10

在此示例中,exec() 函数用于创建一个动态函数,该函数接受参数列表并返回它们的 和。

错误处理

code = """
try:
    print(undefined_variable)
except NameError as e:
    print(f"Error: {e}")
"""
exec(code)
Error: name 'undefined_variable' is not defined

安全注意事项

user_input = input("Enter code to execute: ")
exec(user_input)  # Caution: This can be a security risk if not properly sanitized.

相关链接

  • compile()
  • eval()
  • globals()
  • locals()
  • 异常处理
  • 调试
X Tutup