| title | Встроенная функция Python exec() - Шпаргалка по Python |
|---|---|
| description | Эта функция поддерживает динамическое выполнение кода Python. Объект должен быть строкой или кодовым объектом. Если это строка, она анализируется как набор операторов Python, которые затем выполняются (если не возникает синтаксической ошибки) [...]. |
Функция exec() в Python — это встроенная функция, которая позволяет динамически выполнять код 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, который перебирает диапазон чисел и выводит каждое число в консоль.
x = 10
code = "x += 5"
exec(code)
print(x)15
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()- Обработка исключений
- Отладка