Блог Толика Вострякова

Живой опыт программирования, Python, Django, современные языки и немного фотографий
Блог - новые записи и ссылки (Atom)

Открываю заново IPython -

IPython - расширение стандартной интерактивной оболочки Питона. Легко ставить с помощью pip:

sudo pip install ipython

Джанго использует IPython, если выполнить: ./manage.py shell

Раньше я использовал в IPython историю введенных команд. Удобно можно выйти из оболочки, войти, а все введенные ранее команды сохранились в истории.

Но мимо меня прошла клевая функцональность IPython, как TAB completition. То есть набираете например import fun нажимаете TAB и видите варианты всех модулей начинающихся на fun. Тоже работает для классов, аттрибутов классов и модулей. В том числе и объявленных в интерактивной оболочке вами!

Основные фишки IPython

Дополнение: Спасибо всем за комментарии, добавили много интересного для меня! IPython много чего еще умеет, упомяну в кратце: помощь по объектам используя ? в конце названия объекта, например напишите float? и нажмите Enter. Много магических команд: %run, %edit, профилирование с помощью %prun и т.д. Полный список возможностей можно получить набрав %quickref

Комментарии: 4

keks.sw - 18.03.2010 IPython ради истории - это сильно :)
На сколько я понимаю, 2 самые частоиспользуемые фичи АйПайтона - комплишн и докстринги/сорцы по ?/??
Вообще он много чего умеет (%quickref), мне в свое время было ценен как замена шеллу (!command), транслятор шелл-комманд в питонячьи вызовы.
В последнее время все более популярен bpython - он умеет еще подсказывать и параметры к методам + показывает докстринги в процессе набора, но у него свои косяки.
Еще заслуживает внимания (и мне кажется самым перспективным) DreamPie. У него пока тоже хватает проблем (см. http://juick.com/kekssw/598027, например) и в макоси с ним не так уютно как под линуксом, зато он графический и лучше всего подходит на роль "шелла для написания программ"
Max - 18.03.2010 История и tab completition элементарно включаются в обычной питоновской консоли.
Плюс есть штуки типа bpython где это есть из коробки , плюс кучка других приятных фич типа подсветки и быстрого доступа к докстрингам. IPython это интересная штука, но использовать его для хранения истории это из пушки по воробьям. )
Roman Imankulov - 18.03.2010 Очень полезной для меня оказалась magic-функция %edit в IPython.

Задача выглядит так: необходимо посмотреть, как работает какая-то функция, или стандартный класс, или просто сделать выборку из списка моделей в Django. Причем нередко приходится делать несколько итераций (не тот параметр использовал, не тот метод вызвал и т.п.).

Подход "в лоб" заключается в том, чтобы аккуратно по порядку набрать все команды для проверки требуемой функциональности в консоли, и посмотреть на вывод. Если допущена ошибка в наборе команд, то набрать заново, либо воспользоваться историей, нажимая кнопочку "вверх", пока не надоест.

Более умный подход заключается в том, чтобы набрать последовательность команд в файле, а затем проделать последовательность действий "запустить в консоли - поправить - снова запустить" и т.п.

Команда edit позволяет сделать этот умный подход еще и удобным. Вот так я открываю временный файл для редактирования:

In [1]: edit /tmp/1.py


После закрытия файла и выхода из редактора код, сохраненный в этом файле, исполняется. Важно отметить, что, во-первых, в этом коде я могу использовать все переменные, которые доступны в текущей сессии интерпретатора, во-вторых, все созданные в процессе исполнения кода переменные также окажутся в моем окружении, и в-третьих, файл после закрытия также никуда не девается, и я могу повторно той же командой его открыть, отредактировать и запустить.

Вот тут, кстати, когда-то мной был описан еще один способ удобного использования IPython для быстрой отладки веб-сервисов.
Франковский Богдан - 22.03.2010 Под линукс есть даже более замечательная вещь - bpython.

Добавить комментарий:


Буду использовать, только для связи с тобой

Чтобы и другие могли узнать о тебе

Вы можете использовать markdown разметку.

Например:
**жирный**
*курсив*
## Заголовок

Не используйте html-тэги. Все ссылки станут активными, все переводы строк будут заменены на <br>
captcha