python3數(shù)據(jù)模型
對象, 值和類型
對象是 Python 的抽象數(shù)據(jù)類型, 所有的數(shù)據(jù)在 Python 程序中都表示為對象和對象之間的關(guān)系.
每個(gè)對象都有一個(gè)唯一標(biāo)識(shí)數(shù)字ID, 一個(gè)類型和一個(gè)值. 當(dāng)一個(gè)對象被創(chuàng)建后, 它的標(biāo)識(shí)就固定下來,不會(huì)改變. 我們可以認(rèn)為ID是對象在內(nèi)存中的地址. Python的is操作符就是比較的這個(gè)ID(比如:?a is b), 如果我們想得到這個(gè)ID可以使用內(nèi)建函數(shù)id(), 如:id(a), 查看16進(jìn)制可以使用hex(id(a))
在CPython中,?id(a)就是a的內(nèi)存地址
查看對象的類型使用type(a)
容器 container, 可變性 mutability
容器可以包含對其他多個(gè)對象的應(yīng)用. 比如list, tuple等. 有些容器的不可變的, 比如?tuple, 可變的比如?list, 對于tuple, 如果他內(nèi)部引用了可變的對象, 那么, 我們改變這個(gè)可變的對象, tuple的值也會(huì)變. 但tuple無法增加減少元素.
In?[11]:?a?=[1,2,4]
In?[12]:?b=[3,4,5]
In?[13]:?c=a,b,
In?[14]:?c
Out[14]:?([1,?2,?4],?[3,?4,?5])
In?[15]:?a.append(5)
In?[16]:?c
Out[16]:?([1,?2,?4,?5],?[3,?4,?5])
可變 mutable , 不可變 immutable
對于不可變的類型(例如int): 執(zhí)行代碼
a=1;b=1現(xiàn)在?
id(a)有可能等于id(b), 也可能不等于.對于可變的的類型(例如list): 執(zhí)行代碼
c=[];d=[]那么c和d一定是2個(gè)不同的list, 各自有獨(dú)立的內(nèi)存空間.
標(biāo)準(zhǔn)庫中的類型
Ellipsis
>>>?...
Ellipsis
這個(gè)Ellipsis也可以寫成...,?Ellipsis類型只有一個(gè)示例就是Ellipsis, 可以用來作為函數(shù)的返回值. 類似 “nop” 一樣的占位符. 替代?pass
def?will_do_something():
????...
不可變序列 Immutable sequences
str()
tuple()
bytes()
可變序列 Mutable sequences
list()
bytearray()
array模塊
集合類型
Sets (mutable set)?
set()
Frozen sets (immutable set)?
frozenset()
字典
dict
collections模塊?
OrderedDict
defaultdict
ChainMap
模塊
m.x等于m.__dict__['x']
使用模塊的m.__dict__時(shí)要注意, 如果模塊不在可訪問的范圍, 那么就算有引用指向了模塊的__dict__, 這個(gè)__dict__也會(huì)被清空.
I/O對象(也叫文件對象)
一個(gè)文件對象代表著一個(gè)打開的文件或者套接字, 并有一個(gè)文件描述符fd與這個(gè)打開的文件對應(yīng). 我們打開一個(gè)磁盤文件可以使用open()內(nèi)建函數(shù).?socket.makefile()函數(shù)用來打開一個(gè)套接字.
《數(shù)據(jù)科學(xué)與人工智能》公眾號(hào)推薦朋友們學(xué)習(xí)和使用Python語言,需要加入Python語言群的,請掃碼加我個(gè)人微信,備注【姓名-Python群】,我誠邀你入群,大家學(xué)習(xí)和分享。
