2016-03-22 28 views
3

Ich wollte wissen, ob es eine Möglichkeit gibt, einen String in Python in einen Variablennamen umzuwandeln und ihm einen Standardwert zuzuweisen. Zum Beispiel nehme ich diese Schleife hatte,Erstellen von Variablen aus String-Namen

for i in range(1,4): 
    "User"+str("i")=0 

Es mir die Variablen User1, User2 & User3 einen Standardwert zugewiesen geben würde 0, die ich in meinem Ermessen ändern kann.
Ich weiß, dass dies mit Dateien möglich ist, aber gibt es eine andere Möglichkeit, es zu tun?

Antwort

3

Sie es mit eval tun könnten, aber im Allgemeinen würde ich vorschlagen, ein dict mit den Tasten speichern (Variablennamen) und die zugehörigen Werte:

users = {} 
for i in range(1,4): 
    users["User"+str(i)]=0 
print users 
# {'User1': 0, 'User2': 0, 'User3': 0} 

Sie können jede Variable durch einfaches Aufrufen des Wörterbuchs mit der richtigen Taste freischalten:

print users['User1'] 
# 0 
0

Sie können mit eval(), https://docs.python.org/2/library/functions.html#eval

eval(varname + "=" + value); 
+2

'eval' für Anweisung nicht funktioniert (Zuordnung ist eine Aussage), aber nur für den Ausdruck. – falsetru

+0

Sie haben Recht. Das funktioniert in den meisten Skriptsprachen, rate python ist anders. Ein Diktat der andere Benutzer wäre der bessere Ansatz. Wenn Sie eine Elementvariable festlegen müssen, können Sie eine dieser __setattr __() -Methoden verwenden. Dies ist jedoch gefährlich, da Sie versehentlich andere Methoden überschreiben können. http://python-reference.readthedocs.org/en/latest/docs/dunderattr/setattr.html –

3

Siehe locals und globals wie in

for i in range(1,4): 
    globals()["User"+str(i)] = 0 

Dann User2 zum Beispiel in globalem Bereich sein wird

Verwandte Themen