Python對象類型及其運算

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
相關文章
相關標籤/搜索