pythonのグローバル変数??が思ったとおりに使えなかったので、質問させてください。
以下の通り、againというグローバル変数を作り、whileの条件句で使おうとすると。
UnboundLocalError: local variable 'again' referenced before assignment
つまり、ローカル変数に値が代入される前に使われている、てないというエラーメッセージが出ます。
## コード1 again = 'y' def main(): while again == 'y': again = input("again? (y/n)") if __name__ == "__main__": main()
そこで「main()の外は見えないのか」と思索して、次のように書き換えました。すると、問題なく走ります。
## コード2 def main(): again = 'y' while again == 'y': again = input("again? (y/n)") if __name__ == "__main__": main()
しかし、おかしい、と思ったのでmain()の外にanimalという変数をつくると、しっかり、dogとプリントされます。
## コード3 animal = "dog" def main(): again = 'y' while again == 'y': print(animal) again = input("again? (y/n)") if __name__ == "__main__": main()
ということはmain()の外も見えるということです。なぜ、コード1ではagainはローカル変数のエラーだとなるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/10/09 02:51