Python ‚@‘ erklärt: Dekoratoren, Matrizen und Pandas

Einführung

Beim Lernen von Python werden Sie in Code gelegentlich „@“ (At-Zeichen) sehen. Besonders Dekoratoren (wie @staticmethod) oder der @-Operator, der in Matrixoperationen verwendet wird, sind typische Beispiele. Für Personen, die es zum ersten Mal sehen, kann es jedoch Fragen aufwerfen: „Was bedeutet dieses Symbol?“

In diesem Artikel erklären wir detailliert die Rolle und Verwendung des „@“ in Python. Konkret stellen wir die Verwendungsmethoden für Dekoratoren, Matrixoperationen, die query()-Methode von pandas usw. vor und erklären sie so, dass sie auch für Anfänger verständlich sind.

Was ist „@“ in Python?

In Python ist „@“ hauptsächlich für „Dekorator“ verwendet. Ein Dekorator ist ein Mechanismus, um das Verhalten von Funktionen oder Methoden zu ändern. Zusätzlich wurde ab Python 3.5 der „@“-Operator eingeführt, um das Produkt von Matrizen prägnant darzustellen. Darüber hinaus gibt es in der pandas.query()-Methode eine Verwendung von „@“, um Variablen zu referenzieren.

Die Verwendungsbeispiele von „@“ werden aus den folgenden drei Perspektiven erklärt.

  1. Dekorator (Decorator): Fügt Funktionen oder Klassen spezifische Funktionalitäten hinzu.
  2. Matrixoperationen (@-Operator): Berechnet das Produkt von Matrizen mit NumPy usw.
  3. pandas.query()-Methode: Referenziert Variablen innerhalb von Abfragen in DataFrames.
RUNTEQ(ランテック)|超実戦型エンジニア育成スクール

Was ist ein Dekorator (Decorator)?

Grundlagen des Dekorators

Ein Dekorator ist ein Mechanismus, der das Verhalten einer Funktion oder Methode ändert, indem ‚@‘ davor platziert wird. Er wird hauptsächlich für folgende Zwecke verwendet.

  • Protokollierung
  • Messung der Ausführungszeit
  • Einschränkung des Funktionsverhaltens (z. B. Authentifizierungsfunktion)

Syntax des Dekorators

Die grundlegende Syntax zur Verwendung von Dekoratoren in Python sieht wie folgt aus.

def my_decorator(func):
    def wrapper():
        print("Vor der Ausführung der Verarbeitung")
        func()
        print("Nach der Ausführung der Verarbeitung")
    return wrapper

@my_decorator
def my_function():
    print("Die Hauptfunktion wurde ausgeführt")

my_function()

Ausführungsresultat des Dekorators

Vor der Ausführung der Verarbeitung
Die Hauptfunktion wurde ausgeführt
Nach der Ausführung der Verarbeitung

Praktische Verwendungsbeispiele für Dekoratoren

Dekoratoren sind auch in der Standardbibliothek in großer Zahl enthalten. Zum Beispiel wird ‚@‘ verwendet, um Klassenmethoden oder statische Methoden zu definieren.

@classmethod

Beim Definieren einer Klassenmethode verwendet man@classmethod.

class MyClass:
    class_variable = "Klassenvariable"

    @classmethod
    def class_method(cls):
        return f"Klassenmethode wurde aufgerufen: {cls.class_variable}"

print(MyClass.class_method())

@staticmethod

Statische Methoden verwendet man@staticmethod.

class MyClass:
    @staticmethod
    def static_method():
        return "Statische Methode wurde aufgerufen"

print(MyClass.static_method())
侍エンジニア塾

Der „@“-Operator in Matrizenoperationen

Ab Python 3.5 wurde der @-Operator eingeführt. Dies ist ein Operator, um das Matrixprodukt knapp darzustellen.

Matrixprodukt mit NumPy

import numpy as np

A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])

C = A @ B
print(C)

Verwendung von ‚@‘ in der query()-Methode von pandas

In der query()-Methode von pandas können Variablen mit @ referenziert werden.

Filterung mit Variablen

import pandas as pd


df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]})
threshold = 30

# Referenzierung des Werts von threshold
filtered_df = df.query('age > @threshold')
print(filtered_df)

Zusammenfassung

  • Dekoratoren werden verwendet, um das Verhalten von Funktionen oder Klassen zu ändern.
  • Der „@“-Operator für Matrizenoperationen vereinfacht die Berechnung von Matrizenprodukten in NumPy usw.
  • Die query()-Methode von pandas ermöglicht die Verwendung von „@“ für Variablenreferenzen.

Durch das Verständnis der Verwendung von „@“ und seine angemessene Nutzung wird effizienteres Python-Programmieren möglich.