這篇文章主要講解了“Python里有多少種對(duì)象”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“Python里有多少種對(duì)象”吧!
成都創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),北海街道企業(yè)網(wǎng)站建設(shè),北海街道品牌網(wǎng)站建設(shè),網(wǎng)站定制,北海街道網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,北海街道網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
首先說一下Python中的對(duì)象從哪來的。
typedef struct _object {
_PyObject_HEAD_EXTRA
Py_ssize_t ob_refcnt;
PyTypeObject *ob_type;
} PyObject;
Python的底層用c語言寫的,所以正統(tǒng)的Python其實(shí)叫做CPython。在Windows安裝Python時(shí)候,肯定會(huì)有個(gè)叫python.exe的程序(其他系統(tǒng)也類似),是專門用來解釋執(zhí)行Python代碼的。在這里的Python代碼最終轉(zhuǎn)為了c代碼。c代碼里面有個(gè) PyObject結(jié)構(gòu)體。
這個(gè)結(jié)構(gòu)體有意思了,主要包含倆功能,一個(gè)是引用計(jì)數(shù)是回收垃圾用的,另一個(gè)是個(gè)指針,指向“type object”,用來根據(jù)不同類型的代碼轉(zhuǎn)接到不同的c函數(shù)。其實(shí)這里就是所謂對(duì)象的起源了,因?yàn)檫@里的type其實(shí)會(huì)和python代碼定義的不同對(duì)象類型來個(gè)對(duì)應(yīng)的檢查,檢查通過了就去執(zhí)行對(duì)應(yīng)的函數(shù)了,更具體說就是去內(nèi)存里找對(duì)應(yīng)的數(shù)據(jù)進(jìn)行處理。比如Python代碼傳過來一個(gè)列表a,這個(gè)a最終到c語言里就會(huì)通過PyList_Check(a) 檢查是不是定義好的list這個(gè)type,然后就去做對(duì)應(yīng)操作了。
#define PyList_Check(op) \
PyType_FastSubclass(Py_TYPE(op), Py_TPFLAGS_LIST_SUBCLASS)
對(duì)于學(xué)習(xí)編程認(rèn)為面向?qū)ο蠛茈y的同學(xué),其實(shí)可以想開點(diǎn),這不過是python與c語言互相串通,定義好的數(shù)據(jù)交換規(guī)則罷了。只是這里面雜七雜八的規(guī)則有點(diǎn)多,咱們以后慢慢聊。你可以提前收藏網(wǎng)頁de8ug.vip,關(guān)注最新進(jìn)展。
接下來就是配合七夕的表演了,我們來數(shù)數(shù)Python里面有多少種對(duì)象。
剛才我們聊到Python對(duì)應(yīng)的c語言里有個(gè)type,可以理解為類型的意思。擴(kuò)展到Python里面,會(huì)經(jīng)常出現(xiàn)一個(gè)詞兒叫做object type。顧名思義,不同的對(duì)象其實(shí)就是不同的類型,我們生活中各種物品都分門別類,想用代碼來處理,那么就在代碼里面也給他們分門別類,這樣計(jì)算起來好算,存儲(chǔ)起來也好存。
至于Python里面有多少種對(duì)象,可以從重要的幾種內(nèi)置類型說起。這些內(nèi)容主要在官方文檔的stdtypes章節(jié)。
Python里面的最重要的內(nèi)置類型有 numerics, sequences, mappings, classes, instances and exceptions。翻譯成普通話就是數(shù)字,序列,映射,類,實(shí)例,異常。如果你要長期寫代碼,還是直接記住英文名字比較好。
int
float
complex
首先是Numeric Types,支持int, float, complex(整數(shù),浮點(diǎn)數(shù),復(fù)數(shù))三種數(shù)據(jù)。這個(gè)很好理解了,我們從小接觸數(shù)學(xué),進(jìn)行各種計(jì)算都離不開各種數(shù)學(xué)數(shù)字。
list
tuple
range
str
Binary Sequence Types - bytes, bytearray, memoryview
Set Types — set, frozenset
接下來是Sequence Types,即序列類型,其中l(wèi)ist, tuple, range是很常見的表示序列的類型,然后有個(gè)更常用的關(guān)于字符文本等的序列被單拿出來為str,計(jì)算機(jī)中的內(nèi)部世界二進(jìn)制的序列最為常見,所以序列類型還有Binary Sequence Types,其中又包括bytes, bytearray, memoryview。
序列里面還有個(gè)比較特殊的就是集合set,主要用于尋找不重復(fù)的元素和進(jìn)行數(shù)學(xué)集合運(yùn)算。
提到序列類型,就要出現(xiàn)迭代器Iterator和生成器Generator了,他們對(duì)于從序列中尋找某一個(gè)元素非常重要。
在數(shù)據(jù)結(jié)構(gòu)中,映射類型是非常重要的一種。在各種編程語言里用途也非常多,這也是DE8UG個(gè)人非常喜歡的一種。Python里的映射類型就是字典dict了。在做各種開發(fā)時(shí),這種數(shù)據(jù)結(jié)構(gòu)用途非常廣泛,讓我們能很方便地存儲(chǔ)有對(duì)應(yīng)關(guān)系的數(shù)據(jù)并快速查找需要的元素。
Modules
Classes and Class Instances
Functions
Methods
Code Objects
Type Objects
The Null Object
The Ellipsis Object
The NotImplemented Object
Boolean Values
Internal Objects
接下來就是大量的其他類型了。小到Boolean,null,大到一個(gè)class,一個(gè)module,真的可謂是處處都是對(duì)象了??吹竭@么多的objects沒必要驚慌,根據(jù)自己的學(xué)習(xí)進(jìn)度和使用需要,遇到不同的對(duì)象,仔細(xì)查看ta對(duì)應(yīng)的屬性和方法就好。
感謝各位的閱讀,以上就是“Python里有多少種對(duì)象”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對(duì)Python里有多少種對(duì)象這一問題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!