1. ホーム
  2. python

[解決済み] Pythonでevalを使って変数の値を代入するにはどうしたらいいですか?

2023-03-17 20:27:37

質問

さて、質問は簡単です。どのように私はPythonのevalを使用して変数の値を代入することができますか?私は試してみました eval('x = 1') を試してみましたが、それはうまくいきません。SyntaxErrorが返されます。なぜこれが動作しないのでしょうか?

どのように解決するのですか?

なぜなら x=1 は式ではなく文だからです。使用する exec を使ってステートメントを実行します。

>>> exec('x=1')
>>> x
1


ちなみに、このように exec / eval もし、割り当てる名前が動的なものだけでよいのなら、例えば、辞書を使うことができます。 setattr 機能 , または locals() 辞書 :

>>> locals()['y'] = 1
>>> y
1

更新 : 上記のコードはREPLでは動作しますが、関数内では動作しません。参照 Pythonでローカルを変更する を参照してください。 exec は問題外です。