Главная > общие вопросы, Программирование > Python: Аналог интерактивного режима у себя в программе.

Python: Аналог интерактивного режима у себя в программе.

Как-то лень было писать для задачки интерфейс, а в универе требовали, и тут в мою голову пришла мысль, что не плохо было бы иметь что-то вроде аналога интерактивного режима интерпретатора python'а (лицезреть который Вы можете выполнив команду python или нажав в виндовской IDLE F5).

Решение оказалось в одну строчку. Есть в python'е (да и не только в нём) такая функция с неприличным именем, как eval. Она пытается преобразовать полученное в качестве параметра выражение в некий результат. Например:

>>> eval("2 + 2")
4
>>> a = 4
>>> eval("a ** a")
256

Как вы уже наверное догадались, при наличии такой функции задача сводится к тривиальной. В моей задачке был объект db, методы которого и надо было вызывать для демонстрации функций программы. Вот два варианта их вызова:

while True:
input()

При исполнении программы вводим "db.method1(params)". Функция input([prompt]) эквивалентна вызову eval(raw_input([prompt])). Чтобы не писать каждый раз "db.", можно упростить ввод пользователя:

while True:
eval("db." + raw_input())

Теперь достаточно писать просто "method1(params)".

Так же у функции eval есть ещё 2 необязательных параметра eval(expression[, globals[, locals]]), через них можно передавать устанавливать значения глобальных и локальных переменных.

На этом закончим. Конечно, данный вариант не подойдёт для конечного пользователя, т.к. любой пользовательский ввод следует проверять на корректность, но для демонстрации программы в универе вполне сойдёт.

Пожалуйста, оцените полезность и качество данной статьи. Одна звезда - плохо, 5 - хорошо.
1/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.2/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.3/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.4/5.5/5. (1 голосов, средний: 4,00 из 5)
Загрузка...
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.