• 締切済み

pythonのexecについて

1 exec("a = 1 + 2") 2 exec("print(a)") 3 print(a) 3行目も3と出力されますがこの使い方は間違ってますか? Undefined variable 'a' と警告を出してます

みんなの回答

  • evawo
  • ベストアンサー率0% (0/0)
回答No.2

Undefined variable 'a'は、変数の代入が無いのに、printによる出力処理があるために警告が出ているものです。 開発環境がわからないので憶測ですが、おそらくPylintのような、ソースコードをチェックする仕組みが動いているのだと思います。 execの中の"a = 1 + 2"などは、ただの文字列なので、ソースコードとしてチェックされず、代入がされていないように判断されてしまっています。 試しに、1行目の前に、execを使わず、単純にa=1 とでも代入を書いてみて下さい。警告は消えると思います。 なおexecは、セキュリティリスクも含めて、よく理解した上で使用することをお勧めします。(この質問自体、学習のためのコードかな?と推測) Pythonのプログラムとして意図通りに動作しますので、「間違っているか?」と問われると、間違ってはいないと答えます。 が、「良いコードか?」と問われたら、答えは変わります。そんなところでしょうか。

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

使い方としては間違っていないです。 ただ、python 3.7.5で試してみましたけど >Undefined variable 'a' と警告を出してます のように警告はでなかったです。

manamick
質問者

お礼

ありがとうございました。 警告が消えないので使うのを控えたほうがよさそうですね

関連するQ&A