Python對象類型及其運算python
基本要點: 程序中儲存的全部數據都是對象(可變對象:值能夠修改 不可變對象:值不可修改) 每一個對象都有一個身份、一個類型、一個值 例: >>> a1 = 'abc' >>> type(a1) str 建立一個字符串對象,其身份是指向它在內存中所處的指針(在內存中的位置) a1就是引用這個具體位置的名稱 使用type()函數查看其類型 其值就是'abc' 自定義類型使用class 對象的類型用於描述對象的內部表示及其支持的方法和操做 建立特定類型的對象,也將該對象稱爲該類型的實例,實例被建立後,其身份和類型就不可改變 容器:某對象內包含對其它對象的引用 對象擁有特有的數據屬性和方法,使用點運算符調用 數據:變量 方法:函數
1)對象的身份和類型算法
兩個對象比較: 一、值比較:對象中的數據是否相同; 二、身份比較:兩個變量名引用的是否爲同一對象; 三、類型比較:兩個對象的類型是否相同; 注意: 內置函數id()可返回對象的身份即在內存中的位置 is比較兩個對象的身份 type()返回對象的類型 例: >>> num1 = 5 >>> num2 = 6 >>> num1 == num2 值比較 False >>> num1 is num2 身份比較 True >>> type(num1) is type(num2) 類型比較 True
2)核心數據類型函數
數字:int, long, float, complex(複數), bool 字符:str, unicode 列表:list 字典:dict 元組: tuple 文件:file 其它類型:集合(set), frozenset, 類類型, None
3)類型轉換3d
str(), repr()或format():將非字符型數據轉換爲字符; int(): 轉爲整數 float(): 轉爲浮點數 list(s): 將字串s轉爲列表 tuple(s): 將字串s轉爲元組 set(s): 將字串s轉爲集合 frozenset(s): 將字串s轉換爲不可變集合; dict(d): 建立字典;其d必須是(key, value)的元組序列 例: >>> str1 = 'hello,fanison' >>> list(str1) ['h', 'e', 'l', 'l', 'o', ',', 'f', 'a', 'n', 'i', 's', 'o', 'n'] >>> tuple(str1) ('h', 'e', 'l', 'l', 'o', ',', 'f', 'a', 'n', 'i', 's', 'o', 'n') >>> set(str1) set(['a', 'e', 'f', 'i', 'h', 'l', 'o', ',', 's', 'n']) 特別注意!!!去重 >>> l1=[('a',1),('b',2),('c',3)] >>> list(l1) {'a': 1, 'c': 3, 'b': 2} 補充例題: >>> a = 'ABC' >>> b = a >>> a = 'XYZ' >>> print a b 'XYZ' 'ABC' 圖解過程
4)數字類型操做指針
5種數字類型:整型、長整型、浮點型、複數、布爾型 全部數字類型均不可變 >>> a = 10 # 整型 >>> b = 1.5 # 浮點型 >>> c = True # 布爾型 >>> d = 5+2j # 複數 例: >>> 1 + 2 3 >>> 1.0 + 2 3.0 >>> 11 % 4 3 >>> 11.0 / 4 2.75 整數和浮點數混合運算的結果是浮點數
5)布爾類型code
bool(布爾型)之因此屬於數字類型,是由於bool是int的子類。 >>> int(True) 1 >>> int(False) 0 >>> bool(1) True >>> bool(-1) True >>> bool(0) False 結論: bool 轉 int時, Ture-->1, False-->0 int 轉 bool時, 非0-->True, 0-->False 與運算:只有兩個布爾值都爲 True 時,計算結果才爲 True。 >>> True and True True >>> True and False False >>> False and True False >>> False and False False 或運算:只要有一個布爾值爲 True,計算結果就是 True。 >>> True or True True >>> True or False True >>> False or True True >>> False or False False 非運算:把True變爲False,或者把False變爲True: >>> not True False >>> not False True 注意:一、任何非0數字和非空對象都爲真; 二、數字0、空對象和特殊對象None均爲假; and 和 or 運算的一條重要法則:短路計算。 1. 在計算 a and b 時,若是 a 是 False,則根據與運算法則,整個結果一定爲 False,所以返回 a;若是 a 是 True,則整個計算結果一定取決與 b,所以返回 b。 2. 在計算 a or b 時,若是 a 是 True,則根據或運算法則,整個計算結果一定爲 True,所以返回 a;若是 a 是 False,則整個計算結果一定取決於 b,所以返回 b。 因此Python解釋器在作布爾運算時,只要能提早肯定計算結果,它就不會日後算了,直接返回結果。 例: >>> a = 'python' >>> print 'hello,', a or 'fanison' hello,python >>> b = '' >>> print 'hello,', b or 'fanison' hello,fanison