ホームページ >バックエンド開発 >Python チュートリアル >Python で UnboundLocalError が発生するのはなぜですか?
Python のアンバインド名: UnboundLocalError について
Python で名前に遭遇すると、インタープリターは現在のスコープ内でのバインド ステータスを確認します。名前が値にバインドされていない場合は、エラーが発生します。このようなエラーを回避するには、名前バインドの仕組みを理解することが重要です。
バインドされていないローカル名の性質
ローカル変数が割り当てられる前に参照されると、UnboundLocalError が発生します。値、またはバインディング操作 (代入、関数パラメーターなど) が発生する前。この状況は、条件ステートメントによってバインド操作の実行が妨げられている場合に発生する可能性があります。
次のコード スニペットを考えてみましょう。
def foo(): if False: spam = 'eggs' print(spam)
この例では、変数 spam は if 内でバインドされていません。条件が False と評価されるため、ステートメントのブロックになります。インタプリタが print ステートメントに遭遇すると、スパムのバインドされた値を見つけることができないため、UnboundLocalError が送出されます。
バインディング操作
Python では、バインディング操作によりスコープが確立されます。名前の。これらの操作には次のものが含まれます。
グローバルとローカルバインディング
ローカル名は、特定のスコープ (通常は関数またはネストされたブロック) 内にバインドされます。一方、グローバル名は関数スコープの外側にバインドされており、プログラム内のどこからでもアクセスできます。変数をグローバルとして明示的に宣言するには、関数スコープ内で global キーワードを使用する必要があります。
たとえば、次のコード スニペットを考えてみましょう。
foo = None def bar(): foo = 'spam' print(foo)
このコードでは、foo のため UnboundLocalError が発生します。 bar 関数のスコープ内でバインドされています。これを修正するには、関数内で foo をグローバル変数として宣言する必要があります。
foo = None def bar(): global foo foo = 'spam' print(foo)
要約
ローカル変数がバインドされる前に参照されると、UnboundLocalErrors が発生します。値に。これらのエラーを回避するには、バインド操作とグローバル名とローカル名の概念を理解することが不可欠です。名前のバインディングを適切に管理することで、Python プログラマは、バインドされていない名前に関連するエラーを発生させずにコードを実行できるようになります。
以上がPython で UnboundLocalError が発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。