Importtechniken in Python

Jede py-Datei mit gültigem Python Code ist auch ein Modul und kann in eine Session importiert werden. Für den Import existieren dabei unterschiedliche Techniken. Je nach Methode kann die gesamte Datei importiert werden, oder nur einzelne Konstrukte aus dieser Datei – also ausgewählte Klassen, Funktionen oder Variablen.

In den folgenden Beispielen benutzen wir die externe Bibliothek pandas, um folgende Importtechniken kennenzulernen:

Importieren mit Namespace

Durch diese Technik wird die gesamte pandas-Bibliothek in die Session importiert. Alle Klassen und Funktionen können nach dem Import in folgender Art genutzt werden:

import pandas
pandas.DataFrame({'A' : [1,2,3]})

Zu verwenden ist dabei der Präfix pandas. Dieses wird als Namespace (Namensraum) bezeichnet. Durch die Verwendung eines solchen Namespaces ergeben sich 2 Vorteile:

  1. Der Quellcode wird übersichtlicher. Rezipienten erkennen damit unmittelbar, woher die verwendeten Konstrukte stammen.
  2. Konflikte in der Namensgebung von Funktionskonstukten werden vermieden. In der Session kann sowohl die Klasse DataFrame aus der pandas-Bibliothek verwendet werden, als auch eine weitere Klasse DataFrame, die über ein weiteres Modul importiert wurde.

Mit einem einzigen Befehlsaufruf können auch mehrere Module importiert werden:

import sys, os, pandas, numpy

Importieren mit Namespace und alias

Die Verwendung eines alias findet in einem dieser 2 Szenarien Anwendung:

1. Man möchte einen Modulnamen abkürzen und somit Tipparbeit sparen.

Beim import der Bibliothek pandas findet man dieses Vorgehen im Übrigen sehr häufig. Wie im Beispielcode ebenfalls umgesetzt, folgen Entwickler häufig der Konvention das Kürzel pd zu verwenden:

import pandas as pd
pd.DataFrame({'A' : [1,2,3]})

2. Man möchte gleichnamige Module in eine Session importieren.

Python Dateien mit gleichem Dateinamen in unterschiedlichen Verzeichnissen können auf diese Weise in die Session geladen werden.

import myModul as mm
import parentFolder.myModul as myMo

Importieren einzelner Konstrukte in den Namespace der Session

Sollen nur ein oder wenige spezifische Konstrukte importiert werden, ist die from-Anweisung zu benutzen. Der Namespace wird in diesem Fall nicht explizit angegeben.

from pandas import DataFrame
DataFrame({'A' : [1,2,3]})

Grundsätzlich ist von dieser Form des Imports eher abzuraten, da es zu besagten Namespacekonflikten kommen kann und sich die Übersichtlichkeit des Quellcodes veringert.

Importieren aller Klassen- und Funktionstypen in den Namespace der Session

Mit dem Sternchenoperator werden alle Elemente des Moduls in den Namensraum der Session importiert. Von dieser Variante (die auch als Wildcard-Import bekannt ist) ist aus oben genannten Gründen ebenfalls abzuraten.

from pandas import *
Series([1,2,3])

Der PEP-8 Style-Guide

So wie Menschen auf unterschiedliche Art und Weise Probleme lösen, hat jeder Python-Programmierer seinen eigenen Coding-Stil. Dennoch sollten sich Entwickler soweit wie möglich an die sog. PEPS (Python Enhancement Proposals) halten. In den PEPs sind Spezifikationen von Python Implementierungen enthalten, Standards festgelegt und eben auch Style-Guides beschrieben. Der PEP-8 Style-Guide für Python Code enthält unter anderem eine Anleitung darüber, wie auf konventionellem Weg importiert werden sollte.

Der PEP8 Style-Guide