Python中與數(shù)據(jù)相關(guān)的基本概念
Instance
Python中使用instance存儲數(shù)據(jù),這個(gè)數(shù)據(jù)可以是str、int、list等等,每個(gè)instance會有一個(gè)ID
| ID-Number |
|---|
| Data Type |
| Value |
其ID可以使用id()進(jìn)行輸出:
>>> x=1200
>>> id(x)
Reference
變量名稱(x,y,z,... 等任意*字符)指向某個(gè)instance的引用即reference,比如以下程序中的x:
>>> x=1200
>>> x+200
1400
接下來一個(gè)例子說明了reference對instance的指向是怎么進(jìn)行的:
# 舉例:
>>> x=1200
>>> y=x
>>> x
1200
>>> y
1200
>>> y=5
>>> x
1200
>>> y
5
# 這個(gè)例子中的x和y是兩個(gè)reference, 在第二行兩個(gè)reference均指向了同一個(gè)值為1200的instance,
# 而后y在第7行又改為指向了值為5的一個(gè)instance,x保持不變
不可變/可變 數(shù)據(jù)類型
不可變數(shù)據(jù)類型
數(shù)據(jù)一旦存入一個(gè)這些類型的instance,這個(gè)instance的值(Value)便不再發(fā)生變化。
intboolstr
可變數(shù)據(jù)類型
數(shù)據(jù)存入一個(gè)這些類型的instance后,其值(Value)便不再發(fā)生變化
list
這導(dǎo)致的一個(gè)效應(yīng):side effects
變量可能隨其他變量的變化而變化:
>>> list1=[1,2,3]
>>> list2=list1
>>> list1
[1,2,3]
>>> list2
[1,2,3]
>>> list1[0]=10
>>> list1
[10,2,3]
>>> list2
[10,2,3]
# list1和list2均指向了同一個(gè)instance,這個(gè)instance是list類型,
# 所以是可變的,通過list1將這個(gè)list類型的instance的第一個(gè)值改變之后,
# list2指向的依舊是這一個(gè)instance,所以list2的第一個(gè)值也發(fā)生了改變