ホームページ > バックエンド開発 > Python チュートリアル > Python 関数は「global」キーワードなしでグローバル変数にアクセスできますか?

Python 関数は「global」キーワードなしでグローバル変数にアクセスできますか?

Susan Sarandon
リリース: 2024-12-19 02:09:09
オリジナル
606 人が閲覧しました

Can Python Functions Access Global Variables Without the `global` Keyword?

「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 サイトの他の関連記事を参照してください。

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