Python-Funktionen und -Module

PythonPythonBeginner
Jetzt üben

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab werden Sie zwei grundlegende Konzepte in der Python-Programmierung erkunden: Funktionen und Module. Funktionen ermöglichen es Ihnen, Ihren Code in wiederverwendbare Blöcke zu organisieren, wodurch Ihre Programme modularer und leichter verständlich werden. Module ermöglichen es Ihnen, verwandte Funktionen und Variablen in separate Dateien zu organisieren, was die Wiederverwendbarkeit und Wartbarkeit des Codes fördert. Indem Sie diese Konzepte beherrschen, können Sie effizienteren und besser organisierten Python-Code schreiben.

Dies ist ein Guided Lab, das schrittweise Anweisungen bietet, um Ihnen beim Lernen und Üben zu helfen. Befolgen Sie die Anweisungen sorgfältig, um jeden Schritt abzuschließen und praktische Erfahrungen zu sammeln. Historische Daten zeigen, dass dies ein Labor der Stufe Anfänger mit einer Abschlussquote von 87% ist. Es hat eine positive Bewertungsrate von 98% von den Lernenden erhalten.

Definieren und Verwenden von Funktionen

In diesem Schritt werden Sie lernen, wie Sie Funktionen in Python definieren und verwenden.

  1. Öffnen Sie den Python-Interpreter, indem Sie den folgenden Befehl in Ihrem Terminal eingeben:

    python

    Sie sollten die Python-Eingabeaufforderung (>>>) sehen, was darauf hinweist, dass Sie jetzt in der interaktiven Python-Shell sind.

Python Interpreter
  1. Beginnen wir damit, eine einfache Funktion zu definieren, die eine Person begrüßt. Geben Sie im Python-Interpreter Folgendes ein:

    >>> def greet(name):
    ...     return f"Hello, {name}!"
    ...
    >>> result = greet("Alice")
    >>> print(result)
    Hello, Alice!
    1. Funktionen werden mit dem Schlüsselwort def definiert, gefolgt vom Funktionsnamen und den Parametern in Klammern. Der Funktionskörper ist eingerückt.
    2. Diese Funktion nimmt einen Parameter name entgegen und gibt einen Begrüßungsstring zurück. Anschließend rufen wir die Funktion mit dem Argument "Alice" auf und geben das Ergebnis aus.
    3. Die return-Anweisung wird verwendet, um einen Wert aus der Funktion zurückzugeben. Wenn keine return-Anweisung vorhanden ist, gibt die Funktion None zurück.
    4. Funktionen können verwendet werden, um wiederverwendbaren Code zu kapseln und bestimmte Aufgaben auszuführen. Sie sind der wichtigste Baustein von Python-Programmen.
  2. Jetzt erstellen wir eine Funktion, die eine Berechnung durchführt:

    >>> def calculate_area(length, width):
    ...     return length * width
    ...
    >>> area = calculate_area(5, 3)
    >>> print(f"The area is: {area}")
    The area is: 15

    Diese Funktion berechnet die Fläche eines Rechtecks, wenn Länge und Breite gegeben sind.

  3. Funktionen können auch Standardparameterwerte haben:

    >>> def power(base, exponent=2):
    ...     return base ** exponent
    ...
    >>> print(power(3))
    9
    >>> print(power(3, 3))
    27

    Hier wird, wenn kein Exponent angegeben wird, der Wert 2 als Standardwert verwendet.

  4. Funktionen können mehrere Werte mithilfe von Tupeln zurückgeben:

    >>> def min_max(numbers):
    ...     return min(numbers), max(numbers)
    ...
    >>> minimum, maximum = min_max([1, 5, 3, 9, 2])
    >>> print(f"Minimum: {minimum}, Maximum: {maximum}")
    Minimum: 1, Maximum: 9

    Diese Funktion gibt sowohl den Minimal- als auch den Maximalwert aus einer Liste von Zahlen zurück.

Denken Sie daran, dass Einrückung in Python von entscheidender Bedeutung ist. Funktionskörper müssen konsistent eingerückt sein.

Verständnis des Funktionsbereichs (Function Scope)

In diesem Schritt werden Sie über den Funktionsbereich (Function Scope) und das Verhalten von Variablen innerhalb und außerhalb von Funktionen lernen.

  1. Im Python-Interpreter werden wir lokale und globale Variablen untersuchen:

    >>> x = 10  ## Globale Variable
    
    >>> def print_x():
    ...     print(f"Global x: {x}")
    ...
    >>> print_x()
    Global x: 10
    
    >>> def change_x():
    ...     x = 20  ## Lokale Variable
    ...     print(f"Local x: {x}")
    ...
    >>> change_x()
    Local x: 20
    >>> print(f"Global x after change_x(): {x}")
    Global x after change_x(): 10

    Beachten Sie, dass die Funktion change_x() eine neue lokale Variable x erstellt, die die globale Variable x nicht beeinflusst.

  2. Um eine globale Variable innerhalb einer Funktion zu ändern, verwenden Sie das Schlüsselwort global:

    >>> def modify_global_x():
    ...     global x
    ...     x = 30
    ...     print(f"Modified global x: {x}")
    ...
    >>> modify_global_x()
    Modified global x: 30
    >>> print(f"Global x after modify_global_x(): {x}")
    Global x after modify_global_x(): 30

    Jetzt wurde die globale Variable x geändert.

  3. Funktionen können auch auf Variablen aus ihrem umgebenden Bereich zugreifen:

    >>> def outer_function(x):
    ...     def inner_function():
    ...         print(f"x from outer function: {x}")
    ...     inner_function()
    ...
    >>> outer_function(40)
    x from outer function: 40

    Die innere Funktion kann auf den Parameter x der äußeren Funktion zugreifen.

Das Verständnis des Funktionsbereichs ist entscheidend für das Schreiben von sauberem und fehlerfreiem Code. Es hilft, unbeabsichtigte Nebeneffekte zu vermeiden und macht Ihre Funktionen vorhersagbarer.

Erstellen und Verwenden von Modulen

In diesem Schritt werden Sie lernen, wie Sie Python-Module erstellen und verwenden.

  1. Beenden Sie den Python-Interpreter, indem Sie exit() eingeben oder Strg+D drücken.

  2. Öffnen Sie die WebIDE in der LabEx-VM-Umgebung.

WebIDE LabEx VM interface
  1. Erstellen Sie eine neue Datei mit dem Namen math_operations.py im Verzeichnis ~/project:

    touch ~/project/math_operations.py
  2. Öffnen Sie die neu erstellte Datei im WebIDE-Editor und fügen Sie folgenden Inhalt hinzu:

    ## math_operations.py
    
    def add(a, b):
        return a + b
    
    def subtract(a, b):
        return a - b
    
    def multiply(a, b):
        return a * b
    
    def divide(a, b):
        if b!= 0:
            return a / b
        else:
            return "Error: Division by zero"
    
    PI = 3.14159

    Dieses Modul enthält vier grundlegende mathematische Operationen und eine Konstante PI.

  3. Speichern Sie die Datei (Autospeichern ist in der WebIDE aktiviert).

  4. Jetzt erstellen Sie eine weitere Datei mit dem Namen use_math_module.py im gleichen Verzeichnis:

    touch ~/project/use_math_module.py
  5. Öffnen Sie use_math_module.py im WebIDE-Editor und fügen Sie folgenden Inhalt hinzu:

    ## use_math_module.py
    
    import math_operations
    
    result_add = math_operations.add(5, 3)
    result_subtract = math_operations.subtract(10, 4)
    result_multiply = math_operations.multiply(2, 6)
    result_divide = math_operations.divide(15, 3)
    
    print(f"Addition: {result_add}")
    print(f"Subtraction: {result_subtract}")
    print(f"Multiplication: {result_multiply}")
    print(f"Division: {result_divide}")
    print(f"Value of PI: {math_operations.PI}")

    Dieses Skript importiert das math_operations-Modul und verwendet seine Funktionen und Konstanten.

  6. Speichern Sie die Datei und führen Sie sie mit dem folgenden Befehl im Terminal aus:

    python ~/project/use_math_module.py

    Sie sollten eine Ausgabe ähnlich der folgenden sehen:

    Addition: 8
    Subtraction: 6
    Multiplication: 12
    Division: 5.0
    Value of PI: 3.14159

Durch die Erstellung von Modulen können Sie verwandte Funktionen und Variablen in separate Dateien organisieren, wodurch Ihr Code wartbarer und wiederverwendbarer wird.

Wenn Sie ein Modul importieren, kompiliert Python es in Bytecode und speichert den kompilierten Code in einem __pycache__-Verzeichnis. Dieses Verzeichnis wird am gleichen Ort wie die Moduldatei erstellt und enthält kompilierte Bytecode-Dateien (.pyc oder .pyo).

Sie können dieses Verzeichnis sicher ignorieren, da Python die Kompilierung und Zwischenspeicherung von Modulen automatisch handhabt.

Importieren spezifischer Funktionen aus Modulen

In diesem Schritt werden Sie lernen, wie Sie spezifische Funktionen aus Modulen importieren und Aliase verwenden, um Ihren Code kompakter zu gestalten.

  1. Erstellen Sie eine neue Datei mit dem Namen advanced_math.py im Verzeichnis ~/project:

    touch ~/project/advanced_math.py
  2. Öffnen Sie advanced_math.py im WebIDE-Editor und fügen Sie folgenden Inhalt hinzu:

    ## advanced_math.py
    
    import math
    
    def square_root(x):
        return math.sqrt(x)
    
    def power(base, exponent):
        return math.pow(base, exponent)
    
    def sin(angle):
        return math.sin(math.radians(angle))
    
    def cos(angle):
        return math.cos(math.radians(angle))

    Dieses Modul nutzt das eingebaute Python-Modul math, um fortgeschrittenere mathematische Operationen bereitzustellen.

  3. Jetzt erstellen Sie eine Datei mit dem Namen use_advanced_math.py im gleichen Verzeichnis:

    touch ~/project/use_advanced_math.py
  4. Öffnen Sie use_advanced_math.py im WebIDE-Editor und fügen Sie folgenden Inhalt hinzu:

    ## use_advanced_math.py
    
    from advanced_math import square_root, power
    from advanced_math import sin as sine, cos as cosine
    
    x = 16
    y = 2
    angle = 30
    
    print(f"Square root of {x}: {square_root(x)}")
    print(f"{x} to the power of {y}: {power(x, y)}")
    print(f"Sine of {angle} degrees: {sine(angle)}")
    print(f"Cosine of {angle} degrees: {cosine(angle)}")

    Dieses Skript importiert spezifische Funktionen aus dem advanced_math-Modul und verwendet Aliase für sin und cos.

  5. Speichern Sie die Datei und führen Sie sie mit dem folgenden Befehl im Terminal aus:

    python ~/project/use_advanced_math.py

    Sie sollten eine Ausgabe ähnlich der folgenden sehen:

    Square root of 16: 4.0
    16 to the power of 2: 256.0
    Sine of 30 degrees: 0.49999999999999994
    Cosine of 30 degrees: 0.8660254037844387

Durch das Importieren spezifischer Funktionen und die Verwendung von Aliasen können Sie Ihren Code lesbarer gestalten und Namenskonflikte zwischen verschiedenen Modulen vermeiden.

Erstellen eines Pakets

In diesem letzten Schritt werden Sie lernen, wie Sie ein Paket erstellen. Ein Paket ist eine Möglichkeit, verwandte Module in einer Verzeichnisstruktur zu organisieren.

  1. Erstellen Sie ein neues Verzeichnis mit dem Namen geometry im Verzeichnis ~/project:

    mkdir ~/project/geometry
  2. Innerhalb des geometry-Verzeichnisses erstellen Sie zwei Dateien: __init__.py und shapes.py:

    touch ~/project/geometry/__init__.py
    touch ~/project/geometry/shapes.py

    Die Datei __init__.py ist erforderlich, damit Python das Verzeichnis als Paket behandelt. Sie kann leer sein oder Initialisierungscode für das Paket enthalten.

  3. Öffnen Sie shapes.py im WebIDE-Editor und fügen Sie folgenden Inhalt hinzu:

    ## geometry/shapes.py
    
    import math
    
    def circle_area(radius):
        return math.pi * radius ** 2
    
    def rectangle_area(length, width):
        return length * width
    
    def triangle_area(base, height):
        return 0.5 * base * height
  4. Jetzt erstellen Sie eine Datei mit dem Namen use_geometry_package.py im Verzeichnis ~/project:

    touch ~/project/use_geometry_package.py
  5. Öffnen Sie use_geometry_package.py im WebIDE-Editor und fügen Sie folgenden Inhalt hinzu:

    ## use_geometry_package.py
    
    from geometry.shapes import circle_area, rectangle_area, triangle_area
    
    radius = 5
    length = 4
    width = 6
    base = 3
    height = 8
    
    print(f"Area of circle with radius {radius}: {circle_area(radius):.2f}")
    print(f"Area of rectangle with length {length} and width {width}: {rectangle_area(length, width)}")
    print(f"Area of triangle with base {base} and height {height}: {triangle_area(base, height)}")
  6. Speichern Sie die Datei und führen Sie sie mit dem folgenden Befehl im Terminal aus:

    python ~/project/use_geometry_package.py

    Sie sollten eine Ausgabe ähnlich der folgenden sehen:

    Area of circle with radius 5: 78.54
    Area of rectangle with length 4 and width 6: 24
    Area of triangle with base 3 and height 8: 12.0

Durch die Erstellung eines Pakets haben Sie verwandte Module in einer Verzeichnisstruktur organisiert, was es einfacher macht, verwandte Funktionen in Ihren Projekten zu verwalten und zu importieren.

Zusammenfassung

In diesem Lab haben Sie zwei grundlegende Konzepte in der Python-Programmierung erkundet: Funktionen und Module. Sie haben gelernt, wie Sie Funktionen definieren und verwenden, den Funktionsbereich (Function Scope) verstehen, Module erstellen und nutzen, spezifische Funktionen aus Modulen importieren und verwandte Module in Pakete organisieren.

Sie haben mit der Erstellung einfacher Funktionen begonnen und schrittweise zu komplexeren Konzepten wie dem Funktionsbereich und globalen Variablen vorgearbeitet. Anschließend haben Sie gelernt, wie Sie Module erstellen, um verwandte Funktionen und Variablen in separate Dateien zu organisieren, wodurch Ihr Code wartbarer und wiederverwendbarer wird.

Sie haben verschiedene Methoden zum Importieren von Funktionen aus Modulen untersucht, einschließlich des Importierens spezifischer Funktionen und der Verwendung von Aliasen. Mit diesem Wissen können Sie kompakteren und lesbareren Code schreiben und Namenskonflikte zwischen verschiedenen Modulen vermeiden.

Schließlich haben Sie gelernt, wie Sie ein Paket erstellen, das eine Möglichkeit ist, verwandte Module in einer Verzeichnisstruktur zu organisieren. Dies ist besonders nützlich für größere Projekte, in denen Sie mehrere verwandte Module verwalten müssen.

Diese Konzepte von Funktionen und Modulen sind entscheidend für das Schreiben von gut organisiertem, effizientem und wiederverwendbarem Python-Code. Wenn Sie Ihre Python-Reise fortsetzen, werden Sie feststellen, dass diese Fähigkeiten für das Erstellen komplexerer Programme und die Zusammenarbeit an größeren Projekten unerlässlich sind. Denken Sie daran, diese Konzepte regelmäßig zu üben und die umfangreiche Welt der verfügbaren Python-Module und -Pakete zu erkunden, um Ihre Programmierfähigkeiten zu erweitern.