2016-03-22 8 views
3

Pythonの文字列を変数名に変換してデフォルト値を割り当てる方法があるかどうかを知りたかったのです。たとえば は、私はそれが私にUser1は、User2の&ユーザー3は、私は私の裁量で変更することができ、デフォルト値0が割り当てられた変数を与えるだろう文字列名から変数を作成する

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

このループを、持っていたとします。
ファイルを使用してこれを行うことは可能ですが、別の方法がありますか?

答えて

3

あなたはevalでそれを行うことができますが、一般的に、私は、キー(変数名)と関連付けられている値を格納するためdictを使用することをお勧めします:

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

右のキーで辞書にアクセスするだけで、各変数を覚えることができます:

print users['User1'] 
# 0 
0

あなたは(evalのを使用することができます)、https://docs.python.org/2/library/functions.html#eval

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

'だけで発現させるための(代入文である)の文では動作しませんeval'。 – falsetru

+0

あなたは正しいです。それはほとんどのスクリプト言語で動作しますが、Pythonは違うと思います。 他のユーザーが言及している方が良いアプローチになります。メンバ変数を設定する必要がある場合は、それらの__setattr __()メソッドの1つを使用できますが、他のメソッドを誤って上書きする可能性があるので危険です。 http://python-reference.readthedocs.org/en/latest/docs/dunderattr/setattr.html –

3

はその後User2は、例えばグローバルスコープになります

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

のようにlocalsglobalsを参照してください

関連する問題