この記事では、6つのデータタイプを含むPython3を例として使用します。
1、 数:
int整数
長いです
浮く
繁雑
ブール値(0および1)
2、 ストリング
3、 リスト
4、 タプル
5、 辞書
6、 セットする
id関数を使用して、検証のために変数iのメモリアドレスを表示します(hex(id(i))を使用して16進数のメモリアドレスを表示します)
不変のタイプ:数値、文字列、タプル
不変型変数の再割り当ては、実際には不変型オブジェクトを再作成し、元の変数を新しく作成されたオブジェクトに再ポイントします(他の変数が元のオブジェクトを参照していない場合(つまり、参照カウントが0の場合)、元のオブジェクトはリサイクルされます)。
不変型intの場合、作成される不変型の数に関係なく、値が同じである限り、それらはすべて同じメモリアドレスを指します。
例:番号:
number1=123id(number1)8790928028112
number2=123id(number2)8790928028112
number3=321id(number3)49143760
i + = 1を実行すると、int型が不変であるため、メモリアドレスが変化することがわかります。
i=5id(i)8791205700368
i+=1id(i)8791205700400
j=i
id(j)8791205700400
j
6
変数タイプ:リスト、辞書、セット
変数データタイプを再割り当てしても、新しいオブジェクトは作成されません。
例:リスト:
list1=[1,2,3,4,5]id(list1)49307976
list2=[1,2,3,4,5]id(list2)49307784
list1.append(123)
list1
[1,2,3,4,5,123] id(list1)49307976
list1 = list2を実行すると、list1とlist2が同じメモリアドレスを指し、list1とlist2のタイプがすべてListであるため、変数タイプ、list1とlist2のいずれかを変更すると、他のListの値に影響します。
list1
[1,2,3,4,5,123] id(list1)49307976
list1=list2
id(list1)49307784id(list2)49307784
list2
[1,2,3,4,5]
list2.append(456)
list1
[1,2,3,4,5,456]
list2
[1,2,3,4,5,456]
概して:
不変タイプは値(Value)を参照し、値は変更されず、オブジェクトは変更されません。値が変更され、オブジェクトが変更されます。
可変データタイプは名前(Name)を参照し、名前は変更されず、オブジェクトは変更されません。名前が変更され、オブジェクトが変更されます。
コンテンツの拡張:
**Pythonの可変で不変のデータ? ****
これまでのところ、pythonの数値が可変型であるかどうかに関するこの記事が紹介されています。関連するコンテンツ、python不変型の数値については、ZaLou.Cnの以前の記事を検索するか、以下の関連記事を引き続き参照してください。将来的にはZaLou.Cnをたくさんサポートしてください!
Recommended Posts