ホームページ >バックエンド開発 >Python チュートリアル >Python 関数は「global」キーワードなしでグローバル変数にアクセスできますか?
「global」キーワードなしでグローバル変数にアクセスできますか? Python の難題
Python では、通常、「global」キーワードを使用すると、関数はローカル スコープの外で定義された変数にアクセスして変更することができます。ただし、明示的に 'global' を使用しなくても、関数内からグローバル変数にアクセスできるというのは矛盾しているように思えます。
次の例を考えてみましょう:
sub = ['0', '0', '0', '0'] def getJoin(): return '.'.join(sub) print(getJoin())
このコードでは、' sub' はグローバル変数であり、関数 'getJoin()' は 'global' キーワードを使用せずにそれにアクセスします。これにより、「グローバル」の使用が明らかに不要である場合、その目的について疑問が生じる可能性があります。
なぜこれが発生するのかを理解するには、Python のスコープ ルールを詳しく調べる必要があります。 Python では、すべての関数がローカル変数用に個別の名前空間を作成します。ただし、グローバル変数には、プログラム内のどのスコープからでもアクセスできます。
「global」キーワードがない場合、関数がローカル名前空間に存在しない変数を参照すると、Python はその変数をローカル名前空間で検索します。グローバル名前空間。見つかった場合、関数はグローバル変数にアクセスして変更できます。これは暗黙的なグローバル ルックアップとして知られています。
この例では、「sub」は「getJoin()」が暗黙的にアクセスするグローバル変数です。 「sub」は「getJoin()」の外側で定義されており、関数内のローカル変数によってシャドウされていないため、直接アクセスできます。
ただし、関数内からグローバル変数を変更する場合は、 「global」の使用は、意図しない副作用やコードの混乱を招く可能性があるため、通常は推奨されません。 'global' キーワードは、変数がグローバルであることを明示的に宣言し、変数が関数に対してローカルではないことを読者とインタープリタに明確にします。
以上がPython 関数は「global」キーワードなしでグローバル変数にアクセスできますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。