IPython (Interactive Python) ist eine mächtige interaktive Shell für Python, entwickelt ab 2001 von Fernando Perez. Sie bietet Tab-Vervollständigung, Objekt-Introspektion, Verlaufsverwaltung und Magics — Spezialbefehle, die mit % beginnen. Der IPython-Kernel ist zugleich die Standard-Rechen-Engine hinter Jupyter Notebooks.

Start und erste Schritte

ipython            # interaktive Shell starten
?len               # Docstring anzeigen
len??              # Quellcode anzeigen (falls verfügbar)

Tab-Druck vervollständigt Namen, ein einzelnes ? hinter einem Objekt zeigt Hilfe, ?? den Quellcode. Das ist die schnellste Art, unbekannte APIs zu erkunden.

Magics: Line- und Cell-Magics

Line-Magics (ein %) wirken auf eine Zeile, Cell-Magics (zwei %%) auf einen ganzen Block:

%timeit sum(range(1000))     # Ausführungszeit messen
%time some_function()        # einmalige Zeitmessung
%run skript.py               # Python-Datei ausführen
%load datei.py               # Dateiinhalt in die Shell laden
%save sicherung.py 1-10      # Zeilen 1-10 in Datei speichern
%history                     # bisherige Eingaben anzeigen
%who / %whos                 # definierte Variablen auflisten
%pdb                         # Debugger bei Ausnahmen aktivieren
%%timeit
for i in range(100):
    i * 2

Shell-Integration

Ein ! führt Systemkommandos aus, $variable oder {variable} setzen Python-Werte in Shell-Befehle ein:

!ls -la                  # Verzeichnisinhalt anzeigen
!pip install requests    # Paket direkt installieren
dateiname = "test.txt"
!wc -l $dateiname        # Variable in Shell-Befehl einsetzen

Magics für die Arbeit

Nützliche Helfer: %cd wechselt das Verzeichnis, %pwd zeigt das aktuelle an, %env listet Umgebungsvariablen, %bookmark speichert Verzeichnis-Lesezeichen, %debug startet den Post-Mortem-Debugger, %matplotlib inline rendert Diagramme direkt in Notebooks, %quickref zeigt eine Kurzreferenz aller Magics.

IPython ist die Basis des Jupyter-Ökosystems; installiert und umgeben wird es typischerweise über Conda. Als Alternative zur klassischen Bash-Shell bietet es eine komfortablere Python-REPL.