Python使用對(duì)象模型管理數(shù)據(jù)存儲(chǔ),所有的一切都用對(duì)象表示。每個(gè)對(duì)象包括三個(gè)屬性:身份標(biāo)識(shí)(ID),
值(Value),類型(Type)。
身份標(biāo)識(shí):ID是用來(lái)區(qū)分對(duì)象的唯一的標(biāo)識(shí)符。
id(obj)函數(shù)用來(lái)返回對(duì)象的唯一標(biāo)識(shí)符。
is、is not 運(yùn)算符用來(lái)判斷兩個(gè)對(duì)象是否具有相同的ID,返回True或False。
例:a=1; b=2; 則a is b為False;a=1; b=a; 則a is b返回True。
Python中的對(duì)象類型包括:
數(shù)值類型(整型,浮點(diǎn)型),字符串類型, 布爾類型,列表,元組,字典,文件,異常,Null,模塊,類,實(shí)例,函數(shù),代碼段,幀,切片,類型。
備注點(diǎn):
1,整型數(shù)值常量,Python緩存了有限的額整型常量對(duì)象,如果超出了Python的緩存范圍(可能是1-100),
即使是值相同也是不同的對(duì)象。例:
a=1;b=1 則a和b指向相同的對(duì)象1.(1在緩存范圍內(nèi))。
a=56789;b=56789 則a和b分別指向兩個(gè)不同的整型對(duì)象,雖然值都是56789.
2. 浮點(diǎn),字符串,布爾類型的常量,值相同則指向相同的對(duì)象。
2. 列表,元組,字典常量,實(shí)例,即使值相同也是不同的對(duì)象。例:
a=[1,2];b=[1,2] 則a is b 為False。
3. 代碼段對(duì)象可以被exec命令或eval()函數(shù)調(diào)用,動(dòng)態(tài)生成代碼。
4. 幀對(duì)象記錄了Python在執(zhí)行命令時(shí)的上下文信息。
5. 切片對(duì)象可以訪問立方體數(shù)據(jù)的片段。多維切片語(yǔ)法是sequence[start1 : end1, start2 : end2],
步進(jìn)切片的語(yǔ)法為sequence[起始索引 : 結(jié)束索引 : 步進(jìn)值]。
6. 類型對(duì)象是用來(lái)記錄對(duì)象所屬類型信息的對(duì)象。
6. 對(duì)象類型相關(guān)的函數(shù):
type(obj)返回obj所屬類型的類型對(duì)象(有點(diǎn)拗口)
isinstanc(obj,[type list])判斷對(duì)象是否屬于指定類型,返回True或False
rePR(obj)返回對(duì)象的字符串描述,Python可通過這個(gè)字符串重建obj,即obj=eval(repr(obj)).
反引號(hào)操作符``等同于repr函數(shù)。
str(obj)返回對(duì)象的字符串描述,該字符串可用于打印,對(duì)用戶可讀。
對(duì)象的賦值運(yùn)算和比較運(yùn)算:
賦值運(yùn)算是引用賦值。
比較運(yùn)算一般比較的是對(duì)象的值(value),除了比較運(yùn)算符外,Python提供了比較函數(shù)cmp().
對(duì)于自定義的類cmp()函數(shù)調(diào)用類中自定義的__cmp__()函數(shù)實(shí)現(xiàn)比較運(yùn)算。
Python對(duì)象模型的存儲(chǔ),更新和訪問:
存儲(chǔ)模型分為標(biāo)量存儲(chǔ)和容器存儲(chǔ)。 例:整型對(duì)象是標(biāo)量存儲(chǔ),列表是容器存儲(chǔ)。
更新模型分為可更新和不可更新。例如:
整型,浮點(diǎn),布爾,字符串,元組對(duì)象不可更新,列表,字典對(duì)象可更新。
訪問模型為直接訪問,順序訪問和映射訪問。例:整型對(duì)象是直接訪問,列表對(duì)象是順序訪問,
字典對(duì)象是映射訪問。
備注點(diǎn):變量不是對(duì)象,而是對(duì)對(duì)象的引用。
類型工廠函數(shù):Python統(tǒng)一了類型和類, 所有的內(nèi)建類型現(xiàn)在也都是類,
在這基礎(chǔ)之上, 原來(lái)的所謂內(nèi)建轉(zhuǎn)換函數(shù)象 int(), type(), list() 等等,現(xiàn)在都成了工廠函數(shù)。
當(dāng)你調(diào)用它們時(shí), 實(shí)際上是生成了該類型的一個(gè)實(shí)例,
int(), long(), float(), complex(), str(), unicode(), basestring() , list(), tuple() , type()
dict(),bool() , set(), froenset() , object() ,classmethod() , staticmethod() , super() ,
property() , file(), slice()
新聞熱點(diǎn)
疑難解答
網(wǎng)友關(guān)注