Wie wird die Zeichenfolge in den Variablennamen konvertiert?

8

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() ?

    
Benjamin 25.05.2011, 10:14
quelle

3 Antworten

11

mit der Funktion __import__ und dem getattr Magie, Sie können dies direkt schreiben:

%Vor%     
Cédric Julien 25.05.2011, 10:20
quelle
5

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 .

    
Thomas Wouters 25.05.2011 10:21
quelle
3

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:

gespeichert %Vor%     
Martijn Pieters 25.05.2011 10:22
quelle