Найти в Дзене
programmer's notes (python and more)

Дополнение к базовому курсу по Python. Функция eval()

Доброго времени суток, читатели, зрители моего канала programmer's notes. Не забывайте подписываться и писать свои комментарии к моим статьям и видео.

А это ссылки на подборку по основному курсу по Python

Базовый курс программирования на Python | programmer's notes (python and more) | Дзен

Встроенная функция eval()

В данной статье я вернусь к базовому курсу Python. Функция eval() того стоит. Эта функция

  • Осуществляет разбор строки.
  • Компилирует его в исполняемый интерпретатором Python код.
  • Выполняет его с помощью интерпретатора Python.
  • Возвращает результат.

Параметры строки:

  • 1-й, обязательный. Строка для выполнения.
  • 2-й, словарь глобальных переменных.
  • 3-й, словарь локальных переменных.

Важно отметить, что строка для выполнения должна быть выражением, а не фрагментом программы. Т.е. if, for, while и другие программные конструкции здесь не допускаются. Также нельзя в выражении использовать знак присвоения ('=').

Пример 1.

a = eval('2 + (3/4 + 89) /2 + 3')
print(a)

Результат

49.875

Пример 2

a, b = 10, 13
print(eval('a ** b'))

Результат

10000000000000

Пример 3

a, b = 'qwertyu', 'a'
print(eval('a + b*5'))

Результат

qwertyuaaaaa

Пример 4

print(eval('10 == (3**2 + 1)'))

Результат

True

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

Например

print(eval("x - y", {'x': x}, {'y': y}))

Здесь указывается, что x - глобальная переменная, y - локальная переменная.

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

Пример 5.

import math
a, b = 10, 11
print(eval('math.sqrt(a) * b'))

Результат

34.785054261852174

Хорошего программирования. Оставляйте свои комментарии, не забывайте про лайки и подписывайтесь на мой канал programmer's notes.

Ваш код вызывает у меня восхищение
Ваш код вызывает у меня восхищение
programmer's notes (python and more)