Как работает и что делает функция eval() в Python

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

Функция Python eval()

 Python eval()

Python eval() — это встроенная функция, которая анализирует выражение, переданное этой функции, и запускает выражение(код) Python внутри программы.

Синтаксис

Синтаксис метода eval() следующий:

Параметры

  1. expression — эта строка анализируется и оценивается как выражение Python.
  2. globals (необязательный) – словарь.
  3. locals (необязательный) — объект сопоставления. Словарь — это стандартный и широко используемый тип отображения в Python.

См. следующий пример функции eval() в Python.

Итак, в приведенном выше коде k + 1 оценивается как 21 + 1, и мы получаем результат 22.

запрос

Итак, функция eval принимает выражение, выполняет его и выдает результат.

Давайте рассмотрим пример функции eval в реальном времени.

Приведенный выше код имеет два варианта функций:

  1. Square
  2. Cube

Если пользователь введет Square(l), то он вернет квадраты значений в цикле for, а если Cube, то создаст кубы каждого значения от 1 до 5.

См. приведенный ниже вывод.

Функция Python Eval с примером

Если вы используете eval(input()) в своем коде, было бы неплохо проверить, какие переменные и методы может использовать пользователь. Вы можете увидеть, какие переменные и функции доступны, используя функцию Python dir().

Чаще всего все доступные функции и переменные, используемые в выражении(первый параметр), могут быть не нужны или даже могут иметь лазейку в безопасности.

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

Если оба параметра опущены(как в наших предыдущих примерах), выражение выполняется в текущей области видимости. Вы можете проверить доступные переменные и методы, используя следующий код.

Передача параметра globals — параметр locals опущен

Параметры globals и locals(словари) используются для глобальных и локальных переменных соответственно.

Если словарь locals опущен, по умолчанию используется словарь globals. Это означает, что глобальные переменные будут использоваться как для глобальных, так и для локальных переменных. См. следующий пример.

Смотрите вывод.

Передача параметра globals; параметр locals опущен

Если вы передаете пустой словарь как глобальный, для expression доступны только __builtins__(первый параметр для eval()). Несмотря на то, что мы импортировали математический модуль в приведенную выше программу, выражение не может получить доступ ни к одной из функций, предоставляемых математическим модулем.

Доступ к определенным методам

Напишите следующий код в файле app.py, чтобы сделать определенные методы доступными для пользователя.

См. приведенный ниже вывод.

Доступ к определенным методам

Здесь выражение также может использовать методы sqrt() и pow() вместе с __builtins__ .

Кроме того, по вашему желанию можно изменить имя метода, доступного для выражения.

Передача как глобального, так и локального словаря

Вы можете сделать необходимые функции и переменные доступными для использования в обход словаря locals. См. следующий пример.

Смотрите вывод.

Передача как глобального, так и локального словаря

Оцените статью

Автор статей и разработчик, делюсь знаниями.

Программирование на Python