Python変数、オブジェクト、参照

1444 ワード

ダイナミックタイプ
C,C++とJavaは静的コンパイル型言語であり,Pythonは動的タイプの言語に属し,タイプはコード宣言ではなく実行中に自動的に決定される.
変数、オブジェクト、参照
次のように操作すると
>>> a = 3

実際には、次の3つのステップに分けられます.
  • 値3
  • を表すオブジェクトを作成します.
  • 変数aを作成し、まだ作成されていない場合は
  • 変数を新しいオブジェクト3に接続する
  • 変数とオブジェクトはメモリの異なる部分に保存され、接続によって関連付けられ、変数は常にオブジェクトに接続され、他の変数には接続されませんが、より大きなオブジェクトは他のオブジェクトに接続される可能性があります.
    Pythonでは、変数からオブジェクトへの接続を参照と呼びます.具体的な用語では、次のようになります.
  • 変数はシステムテーブルの要素であり、オブジェクトへの接続を指す空間
  • を有する.
  • オブジェクトは割り当てられたメモリであり、それらが表す値
  • を表すのに十分な空間がある.
  • 参照は、自動的に形成する変数からオブジェクトへのポインタ
  • である.
    技術的には、各オブジェクトには2つの標準的なヘッダ情報があります.
  • このオブジェクトを識別するタイプ
  • を表すタイプ
  • このオブジェクトを回収するかどうかを決定するための参照カウンタ
  • タイプは変数ではなくオブジェクトに属します
    >>> a = 3
    >>> a = 'Frank'
    >>> a = 3.14
    

    変数名にはタイプがなく、タイプはオブジェクトに属し、変数名ではなく、変数aのタイプを変更していません.変数に異なるタイプのオブジェクトを参照させただけです.実際、pythonの変数は特定の時間に特定のオブジェクトを参照しています.
    対象のゴミ収集
    >>> x = 42
    >>> x = 'Google'   #Reclaim 42 now(unless referenced elsewhere)
    >>> x = 3.14        #Reclaim 'Google' now
    

    Pythonの各オブジェクトは参照カウンタを保持し、カウンタは現在そのオブジェクトを指す参照の数を記録し、このカウンタが0に設定されると、このオブジェクトのメモリ領域は自動的に回収されます.ごみ収集の最も直接的で、感じられるメリットは、スクリプト内でメモリ領域の解放を考慮することなくオブジェクトを任意に使用できることを意味し、プログラムの実行時にPythonは使用されなくなった領域をクリーンアップすることです.実際,CやC++のような下位言語に比べて,多くの基礎コードが省けている.
    参照の共有
    >>> a = 128
    >>> b = a