Функция eval( ) в Python

Обложка к статье "Функция eval( ) в Python"

Функция eval в Python используется для вычисления строки выражения в виде кода Python. Она принимает строку, содержащую выражение, и вычисляет его в контексте указанных глобальных и локальных пространств имен.

Синтаксис

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.

Оцените статью
( Пока оценок нет )
Обучение Python
Добавить комментарий