Ich würde gerne wissen, wie man eine String-Eingabe in einen Variablennamen umwandelt, um ihn in Python-Code zu verwenden. Ein konkretes Beispiel:
%Vor% Also hier oben, weil ich nicht weiß, welches Modul ich vor dem Start inspizieren muss, muss ich die Zeichenfolge in einen verwendbaren Modulnamen konvertieren, und weil getmembers()
die Mitglieder als Strings zurückgibt, muss ich sie auch in benutzbar konvertieren Variablennamen, um zu überprüfen, ob sie aufrufbar sind.
Gibt es eine solche Funktion makestringvariable()
?
mit der Funktion __import__ und dem getattr Magie, Sie können dies direkt schreiben:
%Vor%Sie können eine Zeichenfolge nicht in eine Variable als solche konvertieren, da Variablen Teil Ihres Codes sind, nicht Ihrer Daten . Wenn Sie "Variablenvariablen" benötigen, verwenden Sie normalerweise ein dict:
%Vor% Und dann data[foo]
verwenden, anstatt zu versuchen, foo
als Variable zu verwenden. In diesem Beispiel fragen Sie jedoch zum Importieren eines Moduls über eine Zeichenfolge und zum Abrufen von Attributen mithilfe eines Zeichenfolgennamens, beides Dienste, die Python bereitstellt: über die Funktionen __import__
und getattr
.
Mitglieder eines Moduls sind nur Attribute in diesem Modul. Sie können getattr
auf dem Modulobjekt verwenden, um sie abzurufen.
Die Modulobjekte selbst werden im sys.modules
dictionary:
Tags und Links python string variables module introspection