Python学习笔记《Python核心编程》第4章Python对象
所有的python對象都擁有三個特性:身份,類型和值
? ? ?身份:每個對象都有一個唯一的身份標識自己,可以使用內建函數id()來得到,這個值被認為是該對象的內存地址;——只讀
? ? ?類型:對象的類型決定了該對象可以保存什么類型的值,可以進行什么操作,可以用內建函數type()查看對象的類型,type()返回的也是對象(類型也是對象);——只讀
? ? ?值:對象標識的數據項
python標準類型:
? ? ?數字 ? ?Interger/整型 ? ?Boolean/布爾型 ? ? Long integer/長整型 ? ? Floating point real number/浮點型 ? ?Complex number/復數型
? ? String/字符串 ? ?List/列表 ? ?Tuple/元組 ? ?Dictionary/字典
python其它內建類型
? ? 類型對象 ? ?None ——Python的Null對象 ? ?文件 ? 集合/固定集合 ? ?函數/方法 ? ?模塊 ? ?類
內部類型:
? ? ?代碼對象——是變異過的Python源代碼片段,是可執行對象。通過調用內建函數compile()可以得到代碼對象,代碼對象可以被exec命令或eval()內建函數執行。
? ? ?幀對象——標識python的執行棧幀。
? ? ?跟蹤記錄對象——當代碼出錯時,python就會引發一個異常。當異常發生日,一個異常的棧跟蹤信息的跟蹤記錄對象被創建。
? ? ?切片對象——當使用python擴展的切片語法是,就會創建切片對象。擴展的切片語法允許對不同的索引切片操作,包括步進切片、多維切片和省略切片。
? ? ?省略對象——用于擴展切片語法,起記號作用。
? ? ?XRange對象——用于需要節省內存使用火range()無法完成的超大數據場合。
標準類型操作符
? ? 對象值比較:返回布爾值True或者False,數字類型根據數字的大小和符號比較,字符串按照字符序列值進行比較。
? ? 對象身份比較:比較是否是同一個對象的引用
? ? ? ? ? a is b 等價于 id(a)==id(b)————is 與 not標識符都是python關鍵字
布爾類型:布爾邏輯操作符and or not 都是Python關鍵字,not優先級最高。? ? ? ? ??
x,y = 3.1415926536,-1024x<5.0 #Truenot (x<5.0) #False (x<5.0) or (y > 2.7) #True (x<5.3) and (y> 2.7) #Falsenot (x is y) #True注: Python中的整型對象和字符串對象時不可變對象,Python的變量都指針都是指向的同一個對象,比如:
? ? ? ?a = 4;?b = 4;??a is b ? ? ? ? #輸出True ? ? id(a) == id(b) 為True
? ? ? ?a = 'abc'; b = 'abc'; ? a is b ? ?#輸出True ? ? id(a) == id(b) 為True
標準類型內建函數:
? ? ?python提供了一些內建函數用于這些基本對象類型:cmp()、repr()、str()、type()和等同于repr()函數的單反引號(``)操作符,詳細如下:
? ? ?type() : 用法為type(object),接受一個對象作為參數,并返回它的類型。它返回的值也是以個類型對象。貌似前面已經寫到過了;
? ? ? ? ? type('abc') ? ? ? #返回<type 'str'>
? ? ? ? ? type(5) ? ? ? ? ? ?#返回<type 'int'>
? ? ?type() 與 isinstance() :代碼如下
#!/usr/bin/env pythondef displayNumType(num):print num,'is',if isinstance(num,(int,long,float,complex)):print 'a number of type:',type(num).__name__else:print 'not a number at all!!'? ? ?cmp() : ? ?用于比較兩個對象obj1 和 obj2。如果obj1 < obj2,則返回一個負整數,如果obj1>obj2,則返回一個正整數,如果相等則返回0
? ? ?str() 和 repr()或反引號操作符``作用為以字符串的方式獲取對象的內容、類型、數值屬性等信息。str()獲得的字符串可讀性號,而repr()函數得到的字符串通常可以用來重新獲得該對象,即:obj == eval(repr(obj)) 這個等式成立。? ? ?
x = [0,5,0,9] x == eval(repr(x)) #True x == eval(`x`) #True一句話總結:repr()輸出對python比較友好,而str()的輸出對用戶比較友好。雖然如此,很多情況下這三者輸出仍然都是完全一樣的。
工廠函數:它們看起來想函數,實際上它們是類,調用它們的時候實際上是生成了改類型的一個實例 !如:
int() ? ? ?long() ? ? ?float() ? ? complex() ? ? ?str() ? ? ? unicode() ? ? ?basestring() ? ? ? list() ? ? ? tuple() ? ? ? ?type()
dict() ? ?bool() ? ? ? set() ? ? ? frozenset() ? ? object() ? ? classmethod() ? ? ? ?staticmethod() ? ? ?super() ? ? ? property() ? ? ??file() ? ??
?
以存儲模型為標準的類型分類:
? ? ? 標量/原子類型: ? 數值,字符串
? ? ? 容器類型: 列表、元組、字典
以更新模型為標準的類型分類:
? ? ? 可變類型:列表、字典
? ? ? 不可變類型:數字、字符串、元組?
以方位模型為標準的類型分類:
? ? ? 直接訪問:數字
? ? ? 順序訪問:字符串、列表、元組
? ? ? 映射訪問:字典
?本章結束
? ? ? ? ?
? ? ? ? ?
? ? ? ? ??
?
轉載于:https://www.cnblogs.com/NNUF/archive/2013/01/14/2860327.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的Python学习笔记《Python核心编程》第4章Python对象的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: error_reporting笔记
- 下一篇: tnsnames.ora无法保存的问题