Тут есть важная особенность — ipython некорректно работает с юникодом. Я из-за этого полдня убил на поиски ошибки в своем коде при использовании boost.python, а оказалось что под чистым питоном все работает корректно.
Пользуюсь ipython уже давно, но магическими командами особо не пользовался, только %time.
Теперь возьму на вооружение whos, логирование и интроспекцию (постоянно приходилось лезть в соседнее окно, чтобы посмотреть параметры для функции).
За один автокомплит и удобную навигацию по докстрингам уже можно ему ставить памятник.
Остальные функции хороши когда проект слишком большой или изучается чужая программа.
Вопрос: а как заставить ipython переимпортить все импортированные к настоящему моменту модули, перечитывая их (изменившийся) код? Когда-то искал немного, но не нашел, как это сделать. Если редактируешь модуль, чтобы его протестить в терминале приходится перезапускать ipython и заново импортить модуль перед вызовом нужного метода…
да, reload отчасти помогает
но у него есть некоторые не очень приятные caveats, описанные в док-ии, потом хочется уметь релоадить сразу все и также уметь релоадить только конкретный класс. может, я слишком много хочу от питона? :)
IPython: замена стандартного Python shell