Sharing

2011年10月24日 星期一

Python 學習手冊第三版筆記 (二)

CH.4 Python 物作型態簡介

第一次看到這段程式碼時,就笑倒在地上,好可愛的語法呀!
>>> x = 'spam'
>>> x * 8
'spamspamspamspamspamspamspamspam'

  • dir 函式,可以傳回指定物件可用之所有屬性串列,包括了繼承來的




  • help 函式,配合 PyDoc 從物件中抽取出說明文件




  • re 的模組內,可以做 regular expression 的搜尋及比對




  • sorted 函式,是新的內建函式,可以用來把字典轉成序列並且排序




  • list / dict 不能直接用 "+",必須要用 append,但 Tuple 可以用 "+" 來合併物件





  • CH.5 數字

  • 底板除法 // ,小數部份一定會被去掉





  • >>> 1/2
    0
    >>> 1//2
    0
    >>> 1.0/2
    0.5
    >>> 1.0 // 2
    0.0
    

  • python 中以 0 開頭的數字都會預設是 8 進位





  • CH.6 動態定型簡介

  • copy 是淺層複製,deepcopy 是深層複製




  • is 是比較實作參照值的指標,而 == 是比較值





  • CH.7 字串

  • S[:] 是取出從頭到尾的項目,等於進行複製一份



  • S[I:J:K],也就是取出 S 之中,從 I 到 J-1、間隔K的所有項目



  • S[::-1] ,從右走至左,效果就是逆轉序列



  • ord(S) 會印出 S 的 ASCII 代碼,S 是單一字元



  • 字串格式:$[(name)][flags][width][.precesion] code



  • 辭典式字串格式 ex: "%(key1)d %(key2)s" % {"key1":1, "key2":"spam"}






  • CH.8 串列和辭典

  • 索引和切片都是直接修改主體,而不是產生新串列,這一點和字串不同

  • L[1:2] = [] 其實是刪除運算



  • 辭典並非序列,它是沒有順序的,所以不能用 index 來用 for 敘述予以繞行,但可以用反覆器來拿到所有的成員





  • CH.9 Tuple、檔案、以及其他一切

  • 開啟 file 之後,有 readline 及 readlines 兩個 API,一個是回傳字串,一個是回傳字串陣列


  • eval() 這個內建函式可以把字串視為可執行程式碼


  • pickle 可以讓我們直接在檔案中儲存任何 Python 物件


  • F = open('datafile.txt', 'w')
    import pickle
    pickle.dump(D, F)
    F.close()
    
    F = open('datafile.txt')
    E = pickle.load(F)
    

  • 另一種工作 struct 模組知道如何將物件打包成二進位資料


  • >>> F = open('data.bin', 'wb')
    >>> import struct
    >>> bytes = struct.pack('>i4sh', 7, 'spam', 8)
    >>> bytes
    '\x00\x00\x00\x07spam\x00\x08'
    >>> F.write(bytes)
    >>> F.close()
    >>> 
    >>> F = open('data.bin', 'rb')
    >>> data = F.read()
    >>> data
    '\x00\x00\x00\x07spam\x00\x08'
    >>> values = struct.unpack('>i4sh', data)
    >>> values
    

  • == 運算子測試值的相等性。但 is 是測試物件本體,測試兩者是否是相同物件,或是 A 是 B 的其中一種


  • >>> L1 = [1, ('a', 3)]
    >>> L2 = [1, ('a', 3)]
    >>> L1 == L2, L1 is L2
    (True, False)
    

  • 循環式資料結構會印出 [...] 來代表


  • >>> L = ['grail']
    >>> L.append(L)
    >>> L
    ['grail', [...]]
    


    沒有留言: