国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python對象解釋說明以及操作實例

2019-11-08 01:54:51
字體:
來源:轉載
供稿:網友
#coding=utf8 '''Python使用對象模型來存儲數據。Python對象都擁有三個特性:身份、類型、值。身份:每一個對象都有一個唯一的身份標識自己,任何對象的身份可以使用內建函數id()來獲取。這個值可以被認為是該對象的內存地址。類型:對象的類型決定該對象可以保存什么類型的值,可以進行什么樣的操作,以及遵循什么樣的規則。可以使用內建函數type查看Python對象的類型。Python中類型也是對象,type返回的對象不是簡單的字符串。值:對象表示的數據項。上面三個特性在對象創建的時候就被賦值,除了值之外,其它兩個特性都是只讀的。對象屬性:Python用點(.)標記來訪問屬性。屬性包括相應對象的名字等等。最常用的屬性是函數和方法,不過有一些python類型也有數據屬性。含有數據屬性的對象包括(但不限于):類、類實例、模塊、復數和文件。標準類型(基本數據類型):數字、整型、布爾型、長整型、浮點型、復數型、字符串、列表、元組、字典其他內建類型:類型、Null對象(None)、文件、集合/固定集合、函數/方法、模塊、類所有類型對象的類型都是type,它是所有Python類型的根和所有Python標準類的默認元類(metaclass)。類就是類型,實例是對應類型的對象。Python有一個特殊的類型,被稱作Null對象或者NoneType,它只有一個值,那就None。None沒有什么有用的屬性,它的布爾值總是False。所有標準對象均可用于布爾測試,同類型的對象之間可以比較大小。每個對象天生具有布爾True或False值。空對象、值為零的任何數字或者Null對象None的布爾值都是False。下列對象的布爾值時False:None、False、所有的值為零的數:0(整型)、浮點型(0.0)、0L(長整型)、0.0+0.0j(復數)、""(空字符串)、[](空列表)、()(空元組)、{}(空字典)值不是上面列出來的任何值的對象的布爾值都是True。內部類型:代碼、幀、跟蹤記錄、切片、省略、Xrange代碼:代碼對象是編譯過的Python源代碼片段,它是可執行對象。通過調用內建函數compile()可以得到代碼對象。代碼隊形可以被exec命令或eval()內建函數來執行。代碼對象本身不包含任何執行環境信息,它是用戶自定義函數的核心,在被執行時動態獲得上下文。幀:幀對象表示Python的執行棧幀。幀隊形包含Python解釋器在運行時所需要知道的所有信息。它的屬性包括指向上一幀的鏈接,正在被執行的代碼對象,本地及全局名字空間字典以及當前指令等。每次函數調用產生一個新的幀,每一個幀對象都會相應創建一個C棧幀。跟蹤記錄:當異常發生時,一個包含針對異常的棧跟蹤信息的跟蹤記錄對象被創建。如果一個異常有自己的處理程序,處理程序就可以訪問這個跟蹤記錄對象。切片對象:當使用Python擴展的切片語法時,就會創建切片對象。擴展的切片語法允許對不同的索引切片操作,包括步進切片、多維切片、省略切片。多維切片的語法是:sequence[start1:end1,start2:end2]省略切片的語法是:sequence[...,start1:end1]切片鍍錫可以由內建函數slice()生成。步進切片允許利用第三個切片元素進行步進切片,它的語法是:sequence[起始索引:結束索引:步進值]省略對象:省略對象用于擴展切片語法中,起記號作用。這個對象在切片語法中表示省略號。類似Null對象None,省略對象有一個唯一的名字Ellipsis,它的布爾值始終未True。XRange對象:調用內建函數XRange()會生成一個Xrange對象,xrange()是內建函數range()的兄弟版本。用于需要節省內存使用或range()無法完成的超大數據集場合。對象值比較:比較運算符用來判斷同類型對象是否相等。數字類型根據數值的大小和符號比較,字符串按照字符序列值進行比較。多個比較操作可以在同一行上進行,求值順序為從左向右。比較操作是針對對象的值進行的,也就是說比較的是對象的數值而不是對象本身。標準類型值比較運算符:<、>、<=、>=、==、!=對象身份比較:對象身份比較運算符擁有同樣的優先級。標準類型對象身份比較運算符:obj1 is obj2                 obj1和obj2是同一個對象obj1 is not obj2           obj1和obj2不是同一個對象整數對象和字符串隊形是不可變對象,Python會很高效的緩存它們。布爾類型:布爾邏輯運算符and、or、not都是python關鍵字。優先級的從高到低排序:not>and>or標準類型內建函數:python一些內建函數用于基本對象類型:cmp()、rePR()、str()、type()、等同于repr()函數的單發引號(``)運算符。-------------------------------------------------------------------------函數                                            功能-------------------------------------------------------------------------cmp(obj1, obj2)             比較 obj1 和 obj2, 根據比較結果返回整數 i:                                        i < 0 if obj1 < obj2                                        i > 0 if obj1 > obj2                                        i == 0 if obj1 == obj2repr(obj) 或 `obj`             返回一個對象的字符串表示str(obj)                             返回對象適合可讀性好的字符串表示type(obj)                         得到一個對象的類型,并返回相應的type 對象---------------------------------------------------------------------------str()函數得到的字符串可讀性好,而repr()函數得到的字符串通常可以用來重新獲得該對象。通常情況下obj==eval(repr(obj))等式成立。repr()和``在絕大多數情況下可以通過求值運算符(使用eval()內建函數)重新得到該對象。并不是所有repr()返回的字符串都能夠用eval()內建函數得到原來的對象。type()與isinstance():Python不支持方法或函數重載,因此必須保證調用函數或對象的正確性。type()返回任意Python對象類型,而不局限于標準類型。isinstance(object, class-or-type-or-tuple):對象,對象的類型或者類、或者元組性能調試:---------------------------------------------------------------------------------------------1.    減少函數調用次數:每次函數調用都會付出性能代價,要減少函數調用次數,以提高程序性能。2.    對象比較VS對象身份比較:如果對象是不同的,那么變量一定是不同類型的。每一個類型只有一個類型的對象,就沒有必要去檢查值了。一次這樣的調用可能無關緊要,當程序中有很多時,就會影響程序性能。3.    減少查詢次數:如果程序做多次比較的話,程序的性能就會有一些差異。例如,為了得到整數的對象類型,解釋器首先要查找types這個模塊,然后在該模塊字典中查找IntType。但這可以通過使用from-import減少一次查詢。------------------------------------------------------------------------------------------------類型工廠函數:int()    long()    float()    complex()    str()    unicode()    basestring()    list()tuple()    type()    dict()    bool()    set()    frozenset()    object()    classmethod()staticmethod()    super()    property()    file()存儲模型:-------------------------------------------------------------------------------------------分類                                            python類型-------------------------------------------------------------------------------------------標量/原子類型                            數值(所有的數值類型)、字符串(全部是文字)容器類型                                    列表、元組、字典--------------------------------------------------------------------------------------------更新模型:-------------------------------------------------------------------------------------------分類                                            python類型-------------------------------------------------------------------------------------------可變類型                                        列表、字典不可變類型                                    數字、字符串、元組--------------------------------------------------------------------------------------------訪問模型有三種訪問方式:直接存取、順序、映射-------------------------------------------------------------------------------------------分類                                            python類型-------------------------------------------------------------------------------------------直接訪問                                       數字順序訪問                                       字符串、列表、元組映射訪問                                        字典--------------------------------------------------------------------------------------------標準類型分類:-------------------------------------------------------------------------------------------數據類型                    存儲模型            更新模型                訪問模型-------------------------------------------------------------------------------------------數字                            Scalar                不可更改                直接訪問字符串                        Scalar                 不可更改                順序訪問列表                            Container            可更改                順序訪問元組                            Container            不可更改            順序訪問字典                            Container            可更改                映射訪問--------------------------------------------------------------------------------------------'''from types import IntType,DictType,ClassType,ComplexType,ObjectType,BooleanType,StringType,ListTypeclass PythonObject(object):    intType=15    dicType={"name" : 'ewang',"age":intType}    listType=[12,'earn',intType]    toupleType=(456,12.56,'ewang')    complexType=45+5j    float=45.6    boolType=True    stringType="maytheforce"              def cmpType(self,obj):            if type(obj) in (IntType,DictType,ClassType,ComplexType,ObjectType,BooleanType,StringType,ListType):                print obj                            def mulSlice(self,obj,st1,ed1,st2,ed2):        if type(obj) in ["StringType","ListType"]:                return obj[st1:ed1,st2:ed2]        else:            pass            def ellipeseSlice(self,obj,st1,ed1):        if self.checkType(obj) in ["StringType","ListType"]:                return obj[...,st1:ed1]        else:            pass        def stepSlice(self,obj,st1,ed1,step):        if self.checkType(obj) in ["StringType","ListType"]:                return obj[st1:ed1:step]        else:            pass            def valueEqual(self,obj1,obj2):            if obj1==obj2:                return True            else:                return False                def valueLe(self,obj1,obj2):            if obj1<=obj2:                return True            else:                return False                def valueGe(self,obj1,obj2):            if obj1>=obj2:                return True            else:                return False                def valueLt(self,obj1,obj2):            if obj1<obj2:                return True            else:                return False                def valueGt(self,obj1,obj2):            if obj1>obj2:                return True            else:                return False          def valueNe(self,obj1,obj2):            if obj1 != obj2:                return True            else:                return False     def objCmp(self,obj1,obj2):            if obj1 is obj2 and id(obj1)==id(obj2):                return True            else:                return False    def boolOpe(self):            if not self.boolType:                return self.intType>10 and self.float>20.3            else:                return self.intType<10 or self.float<100.0                def buildInFunction(self):        rcmp=cmp(self.intType,10)        if rcmp>0:            print "The intType bigger than 10"        elif rcmp==0:            print "The intType bigger equal 10"        else:            print "The intType littler equal 10"                    rep=repr(self.dicType)        print rep                repT=`self.listType`        print repT                stri=str(self.dicType)        print stri                 if isinstance(self.dicType, DictType):            print self.dicType            def test():    ''' 創建一個測試函數,用來測試PythonObject類'''    pythonObj=PythonObject()    if pythonObj.boolType:        print "run test()"        pythonObj.buildInFunction()                                            if __name__=="__main__":    test()
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 永兴县| 泾川县| 西藏| 鲁甸县| 呼玛县| 中江县| 天全县| 武汉市| 宣武区| 石泉县| 河池市| 黄石市| 榆中县| 长海县| 策勒县| 伊春市| 新野县| 遵义市| 商洛市| 亚东县| 澳门| 祁门县| 沧源| 鄂托克旗| 璧山县| 邛崃市| 双鸭山市| 乐亭县| 新竹县| 博湖县| 山东省| 视频| 永定县| 民和| 财经| 福鼎市| 东乡| 竹溪县| 托克托县| 阿荣旗| 南投县|