Пропустить до содержимого

Оценка и выполнение кода: понятно и легко (eval python)

[

Python eval(): Оценка выражений динамически

Понимание встроенной функции eval() в Python

Встроенная функция Python eval() позволяет оценивать произвольные выражения Python из строкового или скомпилированного кода. Эта функция может быть полезной, когда вы пытаетесь динамически оценивать выражения Python из любого ввода, представленного в виде строки или скомпилированного объекта кода.

Хотя eval() в Python является невероятно полезным инструментом, у этой функции есть некоторые важные проблемы безопасности, которые вам следует учитывать перед использованием ее. В этом руководстве вы узнаете, как работает eval() и как использовать его безопасно и эффективно в ваших программах на Python.

В этом руководстве вы узнаете:

  • Как работает eval() в Python
  • Как использовать eval() для динамической оценки произвольного ввода в виде строки или скомпилированного кода
  • Как eval() может сделать ваш код небезопасным и как минимизировать связанные с этим риски безопасности

Кроме того, вы узнаете, как использовать eval() в Python для создания приложения, которое интерактивно оценивает математические выражения. С помощью этого примера вы примените все, что вы узнали о eval() к практической задаче. Если вы хотите получить код для этого приложения, вы можете нажать на ссылку ниже:

Понимание eval() в Python

Вы можете использовать встроенную функцию Python eval() для динамической оценки выражений из строкового или скомпилированного кода. Если вы передаете строку в eval(), то функция разбирает ее, компилирует в байт-код и оценивает как выражение Python. Но если вы вызываете eval() с объектом скомпилированного кода, то функция выполняет только этап оценки, что является удобным, если вы вызываете eval() несколько раз с одним и тем же вводом.

Сигнатура eval() в Python определена следующим образом:

Python

eval(expression[, globals[, locals]])

Функция принимает первый аргумент, называемый expression, в котором содержится выражение, которое вам нужно оценить. eval() также принимает два необязательных аргумента:

  1. globals
  2. locals

В следующих трех разделах вы узнаете, что означают эти аргументы и как eval() использует их для оценки выражений Python на лету.