パッケージをfoo
明確にインポートしてfoo
再割り当てしなかったにもかかわらず、Pythonインタープリターが割り当て前にローカル変数が参照されていると文句を言う状況に困惑しました。
次のコードについて考えてみます。
import foo.bar
def qux():
if(foo.bar.fred()):
import foo.baz
print(foo.baz.waldo())
qux()
これにより、if(foo.bar.fred()):
。の行でUnboundLocalErrorが発生します。
この問題には、ほとんどのUnboundLocalError状況とは異なる特定の考慮事項があるようで、スタックオーバーフローまたは他のサイトに投稿されたこの特定の状況を見つけることができませんでした。
上記のコードで例外が発生するのはなぜですか?
この例外は、暗黙の(非表示の)再割り当てが原因で発生することがわかりました。場合foo.baz
関数のローカルスコープ内にインポートされ、それは再割り当てがfoo
グローバルなものとは対照的に、ローカル変数であること。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加