Рейтинг@Mail.ru

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 звезда2 звезды3 звезды4 звезды5 звёзд (1 голосов, средний: 5,00 из 5)
Loading ... Loading ...

  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.
*