ホームページ > バックエンド開発 > Python チュートリアル > Python で UnboundLocalError はいつ、どのように発生しますか?

Python で UnboundLocalError はいつ、どのように発生しますか?

Barbara Streisand
リリース: 2025-01-03 00:24:38
オリジナル
915 人が閲覧しました

When and How Does an UnboundLocalError Occur in Python?

Python で名前を「バインド解除」できるのは、いつ、どのようにすればよいですか?

Python のドキュメントでは、ローカル変数に変数が割り当てられる前にアクセスすると UnboundLocalError が発生すると説明されています。価値。ただし、Python は宣言を強制しないと述べています。ここで疑問が生じます: 変数が宣言されていない場合、どのようにして「バインドされていない」状態にできるのでしょうか?

UnboundLocalError と名前のバインド

Python では、変数のバインドは代入、ループ、関数、インポートを通じて行われます。 、例外処理、およびコンテキスト管理。バインディングは変数のスコープを決定します。名前が関数またはメソッド内でバインドされている場合、適切なステートメントを使用してグローバルまたは非ローカルとして明示的にマークされていない限り、その名前はローカルとみなされます。

アンバインド名と未定義名

アンバインド名とは、次のものを指します。バインドされる前に参照された変数。これは、まだ作成または割り当てられていない未定義の名前とは異なります。バインドされていない名前が見つかると、Python は UnboundLocalError を発生させます。

UnboundLocalError の例

次のコードを考えてみましょう。

def foo():
    if False:
        spam = 'eggs'
    print(spam)
ログイン後にコピー

foo() を実行すると UnboundLocalError が発生します。 。 spam 変数は、値が割り当てられることなく print(spam) で参照されます。 if ステートメント内で定義されていても、ステートメントは実行されないため、スパムはアンバインドされたままになります。

UnboundLocalError の防止

UnboundLocalError を防止するには、ローカル変数を参照する前に、ローカル変数に値が割り当てられていることを確認してください。 。あるいは、global ステートメントを使用してグローバル変数を明示的に宣言するか、nonlocal ステートメントを使用して非ローカル変数を明示的に宣言します。

結論

要約すると、名前は、現在のスコープ内でバインドされる前に参照されるとバインドされなくなります。これは、Python では変数宣言が必要ないため、コード ブロック内のどこでもバインド操作を実行できるために発生します。適切な割り当てとスコープ管理を使用すると、UnboundLocalError 例外を回避できます。

以上がPython で UnboundLocalError はいつ、どのように発生しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート