Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。
Q&A
解決済
3回答
443閲覧
総合スコア27
0グッド
0クリップ
投稿2018/07/02 05:37
0
python1x=3 2def f(): 3 print(x)
python
1x=3 2def f(): 3 print(x)
とするとx=3が出力されますが、
python1x=3 2def g(): 3 print(x) 4 x=1
1x=3 2def g(): 3 print(x) 4 x=1
とすると UnboundLocalError: local variable 'x' referenced before assignment とエラーが出力されるのは、なぜでしょうか。 このエラーの意味についてもご教示下さい。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
回答3件
プログラミング FAQ — Python 3.6.5 ドキュメント # なぜ変数に値があるのに UnboundLocalError が出るのですか?
を参照。
投稿2018/07/02 05:49
総合スコア30939
ベストアンサー
エラーの意味は訳せばいいだけで「ローカル変数xが代入より前に参照された」です。
https://docs.python.jp/3/faq/programming.html#what-are-the-rules-for-local-and-global-variables-in-python
関数の本体のどこかで値が変数に代入されたなら、それは明示的にグローバルであると宣言されない限り、ローカルであるとみなされます。
下にx=1と書いてあるのでその関数内のxはローカル変数です。
x=1
x
投稿2018/07/02 05:44
総合スコア11357
回答へのコメント
2018/07/02 06:08
g() 関数内に x の宣言が存在することで、 g() のスコープではローカル変数 x として認識されてるんですね。
g()
このエラーの意味についてもご教示下さい。
できれば自分で辞書でも引きながら読んでほしいです。 「ローカル変数 x が代入される前に参照されています」
総合スコア6765
2018/07/02 05:53
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
局所変数とグローバル変数についてのエラー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。