IPython is an interactive shell for the Python programming language with a rich architecture for interactive computing that works as:
- a more powerful alternative to the regular Python shell (terminal and Qt-based) and an embeddable interpreter to load into your own projects;
- a browser-based notebook;
- a base for programming systems and debugging interface, especially for scientific programming;
- an interactive interface for data visualization and GUI toolkits;
- a high performance tool for collaborative, interactive parallel computing.
First of all, IPython works as an enhanced Python interpreter that includes autocompletion via the Tab key, improved command history, more verbose, color-coded exceptions, etc. Secondly, IPython contains functional Notebook (a web-based interactive computational environment) with support for code execution, text, mathematical expressions, inline plots and other rich media that can be combined into a single document, shared, viewed using the IPython Notebook Viewer or converted to other formats such as HTML, PDF, etc.
IPython has become a great tool for interacting with data. It is widely used in academic scientific computing for data processing and analysis, as well as for interactive application execution connected with such popular Python libraries as NumPy, Matplotlib, SymPy and SciPy. IPython works with Tkinter, GTK, Qt і WX. Additionally, it is often used with tools for large-scale computing, data wrangling, and advanced analytics.
IPython runs on Linux, Windows, OS X and can facilitate interactive computing in any language (most popular are Julia, Haskell, F#, Ruby, Go, and Scala). The IPython architecture is fully language-agnostic and consists of four components: engine, hub, schedulers, and cluster client. The IPython engine is a Python kernel that takes commands and communicates with clients such as the terminal or web notebook over a network connection. IPython kernel also supports asynchronous execution and multi-language integration, and allows mixing Python with other languages, for instance, coding in Cython, Octave, R, and scripting in Ruby, Bash, or Perl.
Basically, IPython combines capabilities of interactive Python console and Unix shell and offers enhanced introspection, code highlighting and visualization, additional shell syntax, flexible debugging, case-sensitive tab completion, and many other functions. Moreover, IPython comprizes tools for executing parallel jobs interactively. For more information visit ipython.org.