Python変数の理解

Pythonの変数はオブジェクトであり、アドレスとメモリを抽象化します。変数は「ポインタ」として理解でき、変数は変数自体ではなく、値のアドレスを格納します。

例:a = 2

 

変数aは、実際には2の値ではなく2のアドレスをメモリに格納します。

この理解に基づいて、いくつかの手順を見ていきます。

 

1.理解しやすい、a = 2、b = a、bは当然2に等しい

2. a = 3、出力3、2もわかりやすい

3.シリアル番号1とシリアル番号2に従って、出力を[2]として理解すると、[2]は問題ありません。

4.シリアル番号4の出力は、シリアル番号1とシリアル番号2に従って[3]、[3]です。これは、ここで出力する必要があるのは[3]、[2]であることを理解するためです。

5.シリアル番号4で理解できれば、ここの出力は[4]、[4]になるはずですが、なぜ[4]、[3]になったのですか?

上記の結果の理由には、Pythonの不変データ型と変数データ型が含まれます

不変のデータ型:整数整数、浮動小数点数、文字列、タプル

変数のデータ型:リストリストと辞書辞書

両方の本質は、メモリ内のデータが変更されているかどうかによって異なります

aは不変のデータ型であるため、新しい値を割り当てるときにスペースを再割り当てし、その値を変数aの新しいメモリアドレスに格納します。元の値2は変更されていないため、b変数に保存されたアドレスの値2変化なし。

これは、シリアル番号2の出力が3、2である理由を説明できます。

 aはリストであるため、可変データ型であるため、aのアドレスは変更されていません。a [0]は、リストに保存されている不変のデータ型のみを変更します。

これはシリアル番号3の出力を説明できます。これは、aとbがリストアドレス47349576を保存し、このリストの内容が変更され、aとbの両方の出力が変更されるためです。

a = [4]は、aによって保存されたリストの最初のアドレスがリスト[4]の最初のアドレスによって上書きされ、bは保存された元のリストの最初のアドレス、つまり47349576であるため、シーケンス番号5の出力は[4]、[4]ではありません。

 注:

 a = [3]とb = [3]のリストアドレスは異なりますが、同じものは不変データタイプ3のアドレスのみです。

 

おすすめ

転載: www.cnblogs.com/Mydream6/p/12761349.html