Importieren von Funktionen und Paketen#

Sehr oft benötigen wir Werkzeuge, die nicht direkt von der Standard-Python-Bibliothek bereitgestellt werden. In diesem Fall müssen wir die erforderlichen Funktionen aus Modulen oder Paketen in unsere Notebooks oder Skripte importieren. Einige Module kommen direkt mit der Python-Distribution (wie das math-Modul, das in Grundlegende Mathematik in Python zu sehen ist), und einige andere wie Numpy, scikit-image usw. sind externe Pakete, die mit pip oder conda installiert werden. Beim Importieren funktionieren sie auf die gleiche Weise, und wir haben mehrere Möglichkeiten, einzelne Funktionen oder Gruppen davon zu importieren.

Grundlegendes Importieren#

Die grundlegende Import-Anweisung verwendet die Schlüsselwörter import und den Modulnamen. Zum Beispiel mit dem grundlegenden Python-Modul pathlib, das sich mit Dateipfaden und -namen befasst:

import pathlib

Wenn wir ein externes Paket importieren möchten, müssen wir sicherstellen, dass es tatsächlich installiert ist, andernfalls erhalten wir eine Fehlermeldung:

import absent_package
---------------------------------------------------------------------------
ModuleNotFoundError                       Traceback (most recent call last)
Input In [14], in <cell line: 1>()
----> 1 import absent_package

ModuleNotFoundError: No module named 'absent_package'

Wenn Ihnen ein Paket fehlt, können Sie es direkt aus dem Notebook mit pip oder conda installieren. Wenn Numpy zum Beispiel noch nicht installiert ist, könnten Sie Folgendes ausführen:

conda install -c conda-forge numpy
Collecting package metadata (current_repodata.json): done
Solving environment: done

# All requested packages already installed.


Note: you may need to restart the kernel to use updated packages.

Alternative Importformulierung#

Mit der einfachen Formulierung oben erhalten wir Zugriff auf Funktionen, die direkt an das Hauptpaket angehängt sind. Lassen Sie uns das Numpy-Paket importieren, das wir später zur Bildverarbeitung verwenden werden. Wir können es importieren:

import numpy

und jetzt erhalten wir z.B. Zugriff auf die Kosinus-Funktion von Numpy, indem wir einfach die Punkt-Notation verwenden:

numpy.cos(3.14)
-0.9999987317275395

Um alle in einem Paket oder Modul verfügbaren Funktionen zu finden, müssen Sie normalerweise in die Dokumentation gehen und nach der Application Programming Interface oder API suchen. Hier finden wir zum Beispiel eine Beschreibung aller mathematischen Funktionen (einschließlich des Kosinus) von Numpy: https://numpy.org/doc/stable/reference/routines.math.html

Namensverkürzung#

Wenn wir ein Paket regelmäßig verwenden, möchten wir vielleicht nicht jedes Mal den vollständigen Paketnamen schreiben, wenn wir eine Funktion daraus benötigen. Um das zu vermeiden, können wir es beim Importieren mit der as-Anweisung abkürzen:

import numpy as np
np.cos(3.14)
-0.9999987317275395

Spezifische Funktionen#

Wenn wir nur eine bestimmte Funktion aus einem Paket benötigen, können wir sie auch einfach mit der from-Anweisung importieren. Zum Beispiel, wenn wir nur die np.cos-Funktion von oben importieren möchten:

from numpy import cos
cos(3.14)
-0.9999987317275395

Natürlich wissen wir in diesem Fall, wenn wir nicht die spezifische Zeile finden, in der die Funktion importiert wird, nicht, dass cos notwendigerweise zu Numpy gehört, da wir auch eine solche Funktion im Notebook definiert haben könnten.

Untermodule#

In größeren Paketen wie Numpy sind einige Funktionen direkt aus dem Hauptpaket zugänglich (wie np.cos) und andere mit spezielleren Aufgaben sind nach Thema oder Bereich in Untermodule gruppiert. Zum Beispiel hat Numpy ein Untermodul für Verteilungen namens random. Alle oben genannten Punkte gelten auch hier.

Wir verwenden die Punkt-Notation, um auf Funktionen zuzugreifen, müssen aber jetzt auch den Namen des Untermoduls angeben. Zum Beispiel die normal-Funktion, die Zahlen aus einer Normalverteilung generiert:

np.random.normal()
1.8077301364791438

Wir können den Funktionsaufruf verkürzen, indem wir nur das Untermodul importieren:

from numpy import random
random.normal()
0.0909924357071552

und wir können es weiter verkürzen, indem wir nur die Funktion importieren:

from numpy.random import normal
normal()
0.0038794083334154307

Übung#

Das Numpy-Paket hat ein lineares Algebra-Untermodul namens linalg. Der folgende Code berechnet die Norm eines Vektors: np.linalg.norm([1,2]). Versuchen Sie:

  • nur das Untermodul zu importieren und die gleiche Funktion aufzurufen

  • nur die norm-Funktion zu importieren und sie aufzurufen