Функция eval
в Python используется для вычисления строки выражения в виде кода Python. Она принимает строку, содержащую выражение, и вычисляет его в контексте указанных глобальных и локальных пространств имен.
Содержание
- Синтаксис
- Параметры
- Возвращаемое значение
- Примеры использования
- Пример 1: Простое вычисление выражения
- Пример 2: Использование переменных в выражении
- Пример 3: Использование глобального и локального пространства имен
- Пример 4: Использование функций в выражении
- Примеры практического применения
- Пример 5: Вычисление математических выражений заданных пользователем
- Важные замечания
Синтаксис
eval(expression, globals=None, locals=None)
Параметры
expression
: Обязательный параметр. Строка, содержащая выражение на языке Python, которое нужно вычислить.globals
: Необязательный параметр. Словарь, определяющий глобальное пространство имен.locals
: Необязательный параметр. Словарь или любой отображаемый объект, определяющий локальное пространство имен.
Возвращаемое значение
Функция возвращает результат вычисления переданного выражения.
Примеры использования
Пример 1: Простое вычисление выражения
result = eval('2 + 2')
print(result) # Вывод: 4
Пример 2: Использование переменных в выражении
x = 10
result = eval('x * 2')
print(result) # Вывод: 20
Пример 3: Использование глобального и локального пространства имен
globals_dict = {'x': 5}
locals_dict = {'y': 10}
result = eval('x + y', globals_dict, locals_dict)
print(result) # Вывод: 15
Пример 4: Использование функций в выражении
def multiply(a, b):
return a * b
result = eval('multiply(3, 4)')
print(result) # Вывод: 12
Примеры практического применения
Пример 5: Вычисление математических выражений заданных пользователем
expression = input("Введите математическое выражение: ")
result = eval(expression)
print(f"Результат: {result}")
Важные замечания
Безопасность: Использование eval
с недоверенными данными может быть опасным, так как это позволяет выполнение произвольного кода. Это может привести к безопасности уязвимостей.
ВНИМАНИЕ НЕ ВЫПОЛНЯЙТЕ ДАННЫЙ КОД
# Никогда не используйте eval с недоверенными данными
user_input = "__import__('os').system('rm -rf /')"
eval(user_input) # Это может удалить все файлы на вашей системе
Замена eval: В большинстве случаев использование
eval
можно избежать, используя другие встроенные функции Python, такие как int
, float
, str
или ast.literal_eval
из модуля ast
.