ホームページ >バックエンド開発 >Python チュートリアル >`global` キーワードを使用せずに Python でグローバル変数にアクセスできるのはいつですか?

`global` キーワードを使用せずに Python でグローバル変数にアクセスできるのはいつですか?

DDD
DDDオリジナル
2024-12-25 03:32:20124ブラウズ

When Can I Access Global Variables in Python Without Using the `global` Keyword?

Python の 'global' キーワードを使用しないグローバル変数アクセス

Python では、関数内のグローバル変数にアクセスするには通常、 「グローバル」というキーワード。ただし、グローバル変数を明示的に宣言しなくてもアクセスできる場合があります。

問題:

なぜグローバル変数にアクセスできるのか次のコード スニペットに示すように、「global」キーワードを使用しません。

sub = ['0', '0', '0', '0']

def getJoin():
    return '.'.join(sub)

print(getJoin())  # Output: '0.0.0.0'

説明:

「global」キーワードは主に、ローカル コンテキスト内でグローバル変数を変更または作成するために使用されます。ただし、場合によっては、次の理由により、明示的にグローバル変数として宣言しなくても、グローバル変数にアクセスできます。

  • 変数のシャドウイング: と同じ名前の変数の場合グローバル変数がローカル スコープ内で定義されている場合、ローカル変数が優先されます。これは変数シャドウイングとして知られています。
  • 名前空間の規則: Python には関数ごとに個別の名前空間があります。ただし、関数内で明示的に定義されていない変数が関数内でアクセスされると、インタープリターはグローバル名前空間でその変数を検索します。変数がグローバル名前空間で見つかった場合は、その変数が返されます。

例:

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

def bob():
    me = "locally defined"  # Defined only in local context
    print(me)

bob() 関数を呼び出すと、関数内で me という名前のローカル変数が定義されているため、「ローカルに定義された」と出力されます。ただし、「global」キーワードを使用せずに関数の外でアクセスしようとすると、「UnboundLocalError」が発生します。

print(me)  # Asking for a global variable

結論:

グローバル変数の変更または作成には通常、「global」キーワードが推奨されますが、明示的に宣言せずにグローバル変数にアクセスできる場合もあります。この動作は、変数のシャドウイングと Python の名前空間内の検索メカニズムによって発生します。ただし、暗黙的なグローバル変数へのアクセスに依存するとエラーや混乱が生じる可能性があることに注意することが重要です。そのため、必要に応じて「global」キーワードを明示的に使用することがベスト プラクティスです。

以上が`global` キーワードを使用せずに Python でグローバル変数にアクセスできるのはいつですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。