Wie man eine Funktion mit ihrem Namen als Zeichenfolge in Python aufruft
In der Python-Programmierung gibt es Momente, in denen Sie eine Funktion mit ihrem Namen aufrufen müssen, der in einer Zeichenfolgenvariablen gespeichert ist. Dies kann besonders nützlich sein, wenn Sie eine Menge von Funktionen haben und diese dynamisch basierend auf Benutzereingaben oder anderen Bedingungen aufrufen möchten.
In diesem Blog-Beitrag werden wir untersuchen, wie man eine Funktion mit einer Zeichenfolge, die den Namen der Funktion enthält, aufruft, und Ihnen eine klare und organisierte Methode zeigen, um dies zu erreichen.
Das Problem: Funktionen dynamisch aufrufen
Stellen Sie sich vor, Sie haben ein Modul namens foo
, das eine Funktion namens bar
enthält. Sie möchten diese Funktion aufrufen, aber anstelle eines direkten Aufrufs haben Sie nur den Namen der Funktion als Zeichenfolge:
import foo
func_name = "bar"
call(foo, func_name) # Wie machen wir das?
Vielleicht fragen Sie sich, wie Sie diese Zeichenfolge in einen Funktionsaufruf umwandeln können. Die Lösung liegt in der eingebauten Funktion getattr
von Python.
Die Lösung: Verwendung von getattr
Was ist getattr
?
getattr
ist eine eingebaute Funktion in Python, die es Ihnen ermöglicht, ein Attribut (in diesem Fall eine Funktion) dynamisch aus einem Objekt (einem Modul, einer Klasse oder einer Instanz) abzurufen. Das bedeutet, dass Sie den Namen des Attributs als Zeichenfolge angeben können und das tatsächliche Objekt zurückbekommen, das mit diesem Namen verknüpft ist.
Wie man getattr
verwendet, um Funktionen aufzurufen
So können Sie getattr
verwenden, um die in der Zeichenfolge gespeicherte Funktion aufzurufen:
-
Modul importieren: Stellen Sie zunächst sicher, dass Sie das Modul importieren, das die Funktion enthält, die Sie aufrufen möchten.
import foo
-
Funktion abrufen: Verwenden Sie
getattr
, um die Funktion aus dem Modul anhand ihres Namens als Zeichenfolge abzurufen.bar = getattr(foo, 'bar')
-
Funktion aufrufen: Jetzt, da Sie die Funktion referenziert haben, können Sie sie wie jede andere reguläre Funktion aufrufen.
result = bar() # Dies ruft foo.bar() auf
Beispielcode
Hier ist der vollständige funktionierende Code:
import foo
# Der Name der Funktion als Zeichenfolge
func_name = "bar"
# Die Funktion mit getattr abrufen
bar = getattr(foo, func_name)
# Funktion aufrufen
result = bar() # Dies wird foo.bar() aufrufen
Wichtige Punkte, die Sie beachten sollten
-
getattr
kann nicht nur für Funktionen auf Modulebene verwendet werden, sondern auch für Methoden von Klasseninstanzen und mehr. -
Wenn das Attribut (die Funktion) nicht existiert, wirft
getattr
einenAttributeError
. Sie können einen Standardwert angeben, um dies zu vermeiden, indem Sie ein zweites Argument ingetattr
verwenden.bar = getattr(foo, 'bar', None) # Dies gibt None zurück, wenn 'bar' nicht existiert.
Zusätzliche Ressourcen
Für weitere Informationen zu getattr
können Sie die offizielle Python-Dokumentation hier einsehen.
Fazit
Der dynamische Funktionsaufruf unter Verwendung einer Zeichenfolgenrepräsentation von Funktionsnamen kann die Flexibilität Ihres Codes erheblich erhöhen. Mit Hilfe von getattr
können Sie Funktionen basierend auf Variablennamen einfach verwalten und aufrufen, wodurch Ihre Programme anpassungsfähiger und benutzerfreundlicher werden.
Probieren Sie diese Methode mit Ihren eigenen Funktionen und Modulen aus und nutzen Sie diese leistungsstarke Fähigkeit in Python!