Python における globals()、locals()、vars() の違いは何ですか?

Susan Sarandon
リリース: 2024-11-17 02:16:03
オリジナル
305 人が閲覧しました

How Do globals(), locals(), and vars() Differ in Python?

globals()、locals()、vars() のニュアンスを探る

Python には、現在の名前空間: globals()、locals()、および vars()。それぞれは、特定の情報を含む辞書を返します。

globals()

globals() は、一貫して現在のモジュールの名前空間の辞書を返します。これにより、モジュール内でグローバルに定義されたすべての名前へのアクセスが提供されます。

locals()

locals() は動的であり、その動作はスコープによって異なります。

  • 関数内: locals() は関数の名前空間の辞書を返します。これには、呼び出し時のクロージャ変数だけでなくローカル変数も含まれます。辞書の更新はローカル変数に反映されます。ただし、返された辞書への代入はローカル変数を変更しません。

たとえば、関数内:

def example():
    x = 1
    l = locals()
    l['x'] = 3
    print(x)  # Outputs 1, not 3
ログイン後にコピー
  • 関数の外: locals() は実際の名前空間辞書を返します。辞書に加えられた変更は名前空間に反映され、その逆も同様です。

例:

class Test:
    a = 'one'
    huh = locals()
    b = 'two'
    huh['c'] = 'three'
    print(huh)  # Outputs {'a': 'one', 'b': 'two', 'c': 'three', 'huh': {...}}
ログイン後にコピー

vars()

vars() はオブジェクトを引数として受け取り、その dict 属性を返します。通常、オブジェクトの dict にはその属性データが保存されます。したがって、オブジェクトを vars() に提供すると、その属性にアクセスできるようになります。

class Test:
    a = 'one'
    b = 'two'
    huh = vars(self)
    c = 'three'
    huh['d'] = 'four'
ログイン後にコピー

この例では、vars(self) は Test インスタンスの dict 属性を返し、 'a'、'b'、'c' などの属性。

以上がPython における globals()、locals()、vars() の違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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