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

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

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

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

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

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

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

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

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: