A shell which acts as a better interactive Python interpreter than the standard Python environment. iPython is designed more for experimentation and playing with ideas prior to implementation than it is for actually developing code. It also supports being embedded in other software for the purpose of extensibility. It even makes it easy to prototype and test GUIs written in Python.