[解決済み] UnboundLocalErrorが発生する理由がわからない(クロージャ) [duplicate]
2022-03-03 17:32:40
質問
何が間違っているのでしょうか?
counter = 0
def increment():
counter += 1
increment()
上記のコードでは
UnboundLocalError
.
解決方法は?
Pythonには変数宣言がないので、その変数がどのようなものかを把握する必要があります。 スコープ を使用します。 関数内部で変数への代入があった場合、その変数はローカルとみなされます。 [1] したがって、行
counter += 1
を暗黙のうちに作成します。
counter
にローカルな
increment()
. しかし、この行を実行しようとすると、ローカル変数の値を読み取ろうとします。
counter
が代入される前に代入され、結果として
UnboundLocalError
.
[2]
もし
counter
がグローバル変数である場合
global
キーワードが役に立ちます。 もし
increment()
はローカル関数であり
counter
がローカル変数である場合
nonlocal
をPython 3.xで使用しています。
関連
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み] バイトを文字列に変換する
-
[解決済み] ループ内のJavaScriptクロージャ - シンプルな実用例
-
[解決済み] リストを均等な大きさの塊に分割するには?
-
[解決済み] Python 3で「1000000000000000 in range(1000000000000001)」はなぜ速いのですか?
-
[解決済み] なぜC++はPythonよりもstdinからの行の読み込みが遅いのですか?
-
[解決済み] C#がforeachで変数を再利用するのは理由があるのか?
-
[解決済み】if __name__ == "__main__": は何をするのでしょうか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】forループを使った辞書の反復処理
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
python implement mysql add delete check change サンプルコード
-
Evidentlyを用いたPythonデータマイニングによる機械学習モデルダッシュボードの作成
-
パッケージングツールPyinstallerの使用と落とし穴の回避
-
[解決済み】TypeError: unhashable type: 'numpy.ndarray'.
-
[解決済み] _tkinter.TclError: 表示名がなく、$DISPLAY環境変数もない。
-
[解決済み】OSError: [WinError 193] %1 は有効な Win32 アプリケーションではありません。
-
[解決済み】Django: ImproperlyConfigured: SECRET_KEY 設定は空であってはならない
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み] 関数内でグローバル変数を使用する