IPython provides a rich toolkit to help you make the most out of using Python interactively. Its main components are:
- A powerful interactive Python shell
- A Jupyter kernel to work with Python code in Jupyter notebooks and other interactive frontends.
The enhanced interactive Python shells have the following main features:
- Comprehensive object introspection.
- Input history, persistent across sessions.
- Caching of output results during a session with automatically generated references.
- Extensible tab completion, with support by default for completion of python variables and keywords, filenames and function keywords.
- Extensible system of 'magic' commands for controlling the environment and performing many tasks related either to IPython or the operating system.
- A rich configuration system with easy switching between different setups (simpler than changing $PYTHONSTARTUP environment variables every time).
- Session logging and reloading.
- Extensible syntax processing for special purpose situations.
- Access to the system shell with user-extensible alias system.
- Easily embeddable in other Python programs and GUIs.
- Integrated access to the pdb debugger and the Python profiler.
The latest development version is always available from IPython's GitHub site.