Pythonの文字列を変数名に変換してデフォルト値を割り当てる方法があるかどうかを知りたかったのです。たとえば は、私はそれが私にUser1は、User2の&ユーザー3は、私は私の裁量で変更することができ、デフォルト値0が割り当てられた変数を与えるだろう文字列名から変数を作成する
for i in range(1,4):
"User"+str("i")=0
このループを、持っていたとします。
ファイルを使用してこれを行うことは可能ですが、別の方法がありますか?
Pythonの文字列を変数名に変換してデフォルト値を割り当てる方法があるかどうかを知りたかったのです。たとえば は、私はそれが私にUser1は、User2の&ユーザー3は、私は私の裁量で変更することができ、デフォルト値0が割り当てられた変数を与えるだろう文字列名から変数を作成する
for i in range(1,4):
"User"+str("i")=0
このループを、持っていたとします。
ファイルを使用してこれを行うことは可能ですが、別の方法がありますか?
あなたは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
あなたは(evalのを使用することができます)、https://docs.python.org/2/library/functions.html#eval
eval(varname + "=" + value);
はその後User2
は、例えばグローバルスコープになります
for i in range(1,4):
globals()["User"+str(i)] = 0
のようにlocals
とglobals
を参照してください
'だけで発現させるための(代入文である)の文では動作しませんeval'。 – falsetru
あなたは正しいです。それはほとんどのスクリプト言語で動作しますが、Pythonは違うと思います。 他のユーザーが言及している方が良いアプローチになります。メンバ変数を設定する必要がある場合は、それらの__setattr __()メソッドの1つを使用できますが、他のメソッドを誤って上書きする可能性があるので危険です。 http://python-reference.readthedocs.org/en/latest/docs/dunderattr/setattr.html –