- 締切済み
pythonのexecについて
1 exec("a = 1 + 2") 2 exec("print(a)") 3 print(a) 3行目も3と出力されますがこの使い方は間違ってますか? Undefined variable 'a' と警告を出してます
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- 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' と警告を出してます のように警告はでなかったです。
お礼
ありがとうございました。 警告が消えないので使うのを控えたほうがよさそうですね