= 5 x
7 Python-Bausteine
Im Python-Entwicklungsprozess ist es hilfreich, die Rollen von Modulen, Paketen und Bibliotheken zu verstehen, um Projekte effektiv zu organisieren und zu verwalten.
Die Verwendung dieser Bausteine hilft nicht nur dabei, den Code sauber und verständlich zu halten, sondern verbessert auch die Zusammenarbeit in Teams. Sie ermöglicht es, Arbeit einfach zu teilen und zu integrieren.
7.1 Module in Python
Module sind einzelne Python-Dateien, die Definitionen und Implementierungen von Variablen und Funktionen enthalten, die in verschiedenen Programmen wiederverwendet werden können.
Einige wichtige Standardmodule sind:
os
: Funktionen zur Interaktion mit dem Betriebssystem.datetime
: Behandelt Datums- und Zeitoperationen.math
: Enthält mathematische Funktionen.json
: Verarbeitet JSON-Daten.
Module helfen, den Code modular zu gestalten, was seine Wartbarkeit und Lesbarkeit verbessert.
Wir können uns Python wie eine gut ausgestattete Küche vorstellen:
- Die Küche ist die Python-Umgebung.
- Rezeptbücher sind Python-Module, die jeweils Sets von Rezepten (Funktionen) für spezifische Aufgaben enthalten.
- Zutaten stellen Datentypen und Variablen dar.
- Kochutensilien sind Methoden aus den Modulen, die helfen, die Zutaten zu manipulieren.
Beim Kochen werden spezifische Werkzeuge und Zutaten für bestimmte Aufgaben oder Rezepte ausgewählt. Ähnlich repräsentieren in Python diese Werkzeuge und Zutaten Module—Sammlungen vorgefertigter Funktionen (Rezepte), die zur Durchführung allgemeiner Aufgaben verwendet werden können.
7.1.1 Variablen
Variablen sind Benannte Speicherorte, die Daten im Speicher halten. Beispielsweise können wir mit dem Befehl x = 5
der Variable x
den Wert 5 zuweisen:
Wenn wir die Variable mit dem Befehl print()
ausgeben, können wir den zugewiesenen Wert sehen:
print(x)
5
7.1.2 Funktionen
Funktionen sind wiederverwendbare Codeabschnitte, die eine bestimmte Aktion ausführen. Wir können bspw. eine Funktion zur Berechnung des Quadrats einer Zahl erstellen. Der Parameter zahl
ist einfach ein Platzhalter, der eine Zahl repräsentiert, deren Quadrat berechnet werden soll:
def quadrat(zahl):
"""Berechnen und zurückgeben des Quadrats einer Zahl."""
return zahl * zahl
def quadrat(zahl):
def
ist ein Schlüsselwort in Python, das verwendet wird, um eine Funktion zu definieren.quadrat
ist der Name der Funktion.(zahl)
sind die Klammern, die den Parameter der Funktion enthalten. In diesem Fall gibt es einen Parameter namenszahl
. Dies ist lediglich ein Platzhalter und teilt der Funktion mit, dass ein Wert eingegeben muss.
"""Berechnen und zurückgeben des Quadrats einer Zahl."""
- Dies ist ein Docstring (Dokumentations-String). Er beschreibt, was die Funktion tut.
- Docstrings werden in dreifachen Anführungszeichen eingeschlossen und dienen zur Dokumentation der Funktion.
return zahl * zahl
return
ist ein Schlüsselwort, das angibt, was die Funktion zurückgeben soll.zahl * zahl
berechnet das Quadrat der Eingabezahl, indem die Zahl mit sich selbst multipliziert wird.- Das Ergebnis dieser Berechnung wird von der Funktion zurückgegeben.
Damit die Funktion definiert werden kann, muss die Einrückung korrekt vorgenommen werden. Der Standard in Python ist die Verwendung von 4 Leerzeichen pro Einrückungsebene. Funktionen und andere Steuerstrukturen verwenden Einrückungen, um anzugeben, welcher Code innerhalb des Blocks gehört.
Einrückung ist in Python nicht nur eine Stilfrage; sie hat eine syntaktische Bedeutung. Python verwendet Einrückungen, um Codeblöcke zu definieren. Die korrekte Verwendung von Einrückungen ist entscheidend, damit der Code wie erwartet ausgeführt wird.
Die Funktion kann nun mit dem definierten Funktionsnamen (hier quadrat
) in unserem Code verwendet werden:
2) quadrat(
4
7.1.3 Import von Modulen
In Python gibt es verschiedene Möglichkeiten, Module zu importieren und deren Funktionalitäten und Konstanten zu nutzen. Hier zwei gängige Methoden:
- Import des gesamten Moduls
# Import des gesamten Moduls
import math
# Verwendung einer Funktion aus dem Modul
= math.sqrt(2)
result # Ausgabe der Variable
print(result)
1.4142135623730951
In diesem Beispiel wird das gesamte math
-Modul importiert. Um auf Funktionen des Moduls zuzugreifen, wird die Punktnotation verwendet: math.funktionsname()
. Hier wird die Quadratwurzelfunktion sqrt()
des math
-Moduls aufgerufen, um die Quadratwurzel von 2 zu berechnen.
- Selektiver Import spezifischer Elemente
# Selektive Importmethode
from math import sqrt
# Verwendung der Funktion
= sqrt(2)
result # Ausgabe der Variable
print(result)
1.4142135623730951
Diese Methode importiert nur die spezische Methode sqrt
aus dem math
-Modul. Der Vorteil hierbei ist, dass sqrt
direkt ohne Voranstellung des Modulnamens verwendet werden kann. Dies kann den Code lesbarer machen, besonders wenn das importierte Element häufig verwendet wird.
Bei
import math
wird das gesamte Modul importiert. Alle Funktionen und Konstanten sind verfügbar, müssen aber mitmath.
aufgerufen werden.Bei
from math import sqrt
wird nur die Methodesqrt
importiert. Sie kann direkt verwendet werden, aber andere Elemente desmath
-Moduls sind nicht verfügbar, es sei denn, sie werden ebenfalls explizit importiert.
Die Wahl der Importmethode hängt von verschiedenen Faktoren ab:
Häufigkeit der Verwendung: Wenn nur wenige Funktionen eines Moduls benötigt werden, kann der selektive Import sinnvoll sein.
Namenskonflikte: Der Import des gesamten Moduls mit
import math
vermeidet potenzielle Namenskonflikte mit anderen Variablen oder Funktionen im Code.Codeklarheit: In manchen Fällen kann die explizite Verwendung des Modulnamens (z.B.
math.sqrt()
) die Herkunft einer Funktion deutlicher machen.
Es ist generell empfehlenswert, Importe am Anfang einer Python-Datei zu platzieren. Dies verbessert die Übersichtlichkeit und macht auf einen Blick ersichtlich, welche externen Module und Funktionen im Code verwendet werden.
Durch die Verwendung von Modulen können komplexe Berechnungen und Operationen mit wenigen Zeilen Code durchgeführt werden, was die Effizienz und Lesbarkeit des Programms erheblich verbessert.
7.2 Pakete in Python
Pakete in Python sind Verzeichnisse von Python-Modulen mit einer speziellen Datei namens __init__.py
. Sie ermöglichen es, mehrere Module zusammenzupacken, wodurch es einfacher wird, eine Sammlung von Modulen als eine Einheit zu verwalten und zu verteilen.
Ein typisches Paket könnte so strukturiert sein:
mein_paket/
__init__.py
modul1.py
modul2.py
unterpaket/
__init__.py
modul3.py
Wenn ein Modul einem Rezeptbuch ähnelt, ist ein Paket vergleichbar mit einer Sammlung von Rezeptbüchern. Jedes Buch (Modul) konzentriert sich auf einen bestimmten Bereich, aber zusammen bieten sie eine breite Palette kulinarischer Optionen.
7.2.1 Import von Paketen
Für Data Science sind einige grundlegende Pakete, einschließlich ihrer Importanweisungen mit den gängigen Bezeichungen (Aliase):
Paket | Funktion | Import |
---|---|---|
numpy | Numerische Berechnungen und Arrayoperationen | import numpy as np |
pandas | Datenmanipulation und -analyse | import pandas as pd |
matplotlib | Datenvisualisierung | import matplotlib.pyplot as plt |
seaborn | Datenvisualisierung | import seaborn as sns |
altair | Datenvisualisierung | import altair as alt |
scikit-learn | Machine-Learning-Algorithmen | from sklearn import ... |
Ein Alias ist ein alternativer Name, der beim Importieren eines Moduls verwendet wird. Diese Aliase sind Konventionen in der Data-Science-Community. Sie ermöglichen es, die Pakete mit kürzeren Namen zu referenzieren, was den Code lesbarer und einfacher zu schreiben macht. Zum Beispiel können wir nach dem Import von import numpy as np
den Code np.array()
statt numpy.array()
schreiben.
Bei scikit-learn (sklearn) steht from sklearn import ...
, weil:
- Scikit-learn ist ein umfangreiches Paket mit vielen Untermodulen.
- Üblicherweise importiert man nur die spezifischen Funktionen, die man benötigt.
- Die genaue Importanweisung hängt vom jeweiligen Anwendungsfall ab.
Beispiel zur Verwendung eines Pakets:
# Import des gesamten Pakets
import numpy as np
# Erstellung eines Arrays
= np.array([1, 2, 3, 4, 5])
daten # Berechnung des Mittelwerts
= np.mean(daten)
daten_mittelwert # Ausgabe des Mittelwerts
print(daten_mittelwert)
3.0
import numpy as np
: Diese Zeile importiert das gesamte NumPy-Paket und weist ihm das Alias ‘np’ zu. NumPy ist eine grundlegende Bibliothek für numerische Berechnungen in Python.daten = np.array([1, 2, 3, 4, 5])
: Hier wird ein NumPy-Array erstellt und alsdaten
gespeichert. Die Funktionnp.array()
konvertiert die übergebene Python-Liste[1, 2, 3, 4, 5]
in ein NumPy-Array. NumPy-Arrays sind effizienter für numerische Operationen als normale Python-Listen.daten_mittelwert = np.mean(daten): Diese Zeile berechnet den Mittelwert des zuvor erstellten Arrays mithilfe der NumPy-Funktion
mean(). Der Mittelwert wird dann der Variablen
daten_mittelwert`zugewiesen.print(daten_mittelwert)
: Diese Zeile gibt den Wert der Variabledaten_mittelwert
aus.
7.3 Bibliotheken in Python
Eine Bibliothek ist eine Sammlung von Paketen und Modulen, die zusammen eine umfangreiche Funktionalität bereitstellen. Bibliotheken bieten oft Lösungen für spezifische Problemfelder und können viele Module und Pakete umfassen.
In der Küchenanalogie wäre eine Bibliothek eine komplette Küche, ausgestattet mit einer Vielzahl von Werkzeugen und Zutaten für verschiedene Kochstile und -techniken. Es ist eine umfassende Sammlung, die ermöglicht, nahezu jedes Gericht zu kochen, das man sich vorstellen kann.
Einige wichtige Python-Bibliotheken:
SciPy
: Bietet wissenschaftliche und technische Berechnungen, baut aufnumpy
auf.TensorFlow
undPyTorch
: Bibliotheken für maschinelles Lernen und neuronale Netze.
Beispiel zur Verwendung einer Bibliothek:
# Import der benötigten Funktion aus SciPy
from scipy import special
# Berechnung der Fakultät von 5
= special.factorial(5)
ergebnis # Ausgabe des Ergebnisses
print(ergebnis)
120.0
Um die nachfolgenden Anleitungen zu vereinfachen, werden wir nicht immer streng zwischen Bibliotheken und Paketen unterscheiden, sondern hauptsächlich den Begriff Python-Pakete verwenden, wenn wir Python-Software importieren (auch wenn es sich dabei um eine Bibliothek handelt).