第五章 數字
1.數字類型
a,Python支援的數字類型:整型,長整型,布爾型。雙精確度浮點型,十進位浮點型,和複數
b,建議用大寫字母“L”表示長整數。並且,整型和長整型正在趨向統一。必要時整型會悄悄自動轉換為長整型,從而避免數值範圍越界為使用者帶來煩惱。
c,雙精確度浮點數(類似於c中的double)
d,複數:實數部分和虛數部分都是浮點數。推薦用尾碼“j”,和程式輸出保持一致;num.real,num.imag,num.conjugate()分別表示複數的實部,虛部,共軛複數。
2.運算子
a,Python支援的運算子幾乎全都會進行自動資料類型轉換。
b,現階段Python仍採用整數相除商取整的做法,將來將會支援得到真正的商。可以通過from __future__ import division來調用該除法。地板除將會由新運算子‘//’支援。
c,非複數取餘等價於:x - (math.floor(x/y) * y)。複數取餘等價:x - (math.floor((x/y).real) * y)
d,冪運算操作符比其左側運算元的一元操作符優先順序高,比其右側運算元的一元運算子優先順序低。
3.內建函數與工廠函數
a,int(),long(),float(),complex(),bool()(均由內建函數改變為工廠函數)
b,內建函數:abs(),coerce(),divmod(),pow(),round()。
c,只適用於整數:進位轉換函式oct(),hex();ASCII轉換函式chr(),ord();unichr()
4.相關模組
a,decimal,array,math/cmath,operator,random
b,random包含多個偽隨機數發生器。randrange(),uniform(),randint(),random(),choice()
第六章 序列:字串、列表和表列
1.序列類型操作符(所有序列類型均適用)
a,in,not in: obj [not] in sequence(返回True或False)
b,seq[ind](獲得下標為ind的元素);seq[ind1:ind2](獲得下標從ind1到ind2間的元素集合);seq *expr(序列重複expr次);seq1 + seq2(串連序列seq1和seq2,用於定序序列效率低);
c,擴充切片操作,第三個索引值被用作步長參數;sequence[:None]分隔出整個序列。
2.內建函數
a,類型轉換:list(iter);str(obj);unicode(obj);basestring()(抽象工廠函數,不能被執行個體化和調用);tuple(iter)
b,操作類型函數:len(),reversed(),sum()(三者只接受序列類型);enumerate(iter),sort(),zip()(接受可迭代對象),max(),min()(除iter外還可接受參數表)
3.字串
a,出於效能考慮,盡量不要匯入和使用string模板。使用%格式化操作符或者把字串放到一個列表中然後用join()方法。
b,Python 的文法允許你在源碼中把幾個字串連在一起寫。
c,如果把一個一般字元串和一個Unicode 字串做串連處理,Python 會在串連操作前先把一般字元串轉化為Unicode 字串。
d,格式化操作符只適用於字串:非常類似於c語言的printf()格式代碼 format_string % (arguments_to_convert)
e,字串模板:from string import Template;原始字串操作符(r/R),這個類似於c#裡的@""用法。
f,Unicode字串操作符(u/U):將字串轉換成完全地Unicode字串對象。(原始Unicode字串:Unicode操作符必須出現在原始字串操作符之前)
4.字串內建函數
a,max()和min()函數返回迭代器或者參數列中最大/最小的元素(字串是按照ASCII碼值排列)
b,enumerate(iter):對象產生由iter 每個元素的index 值和item 值組成的元組;zip()返回一個列表
5,字串的獨特特性:
a,一個反斜線加一個單一字元表示一個特殊字元。也可直接用\000或者\xXX(八進位或者十六進位)的ASCII碼值。NUL在Python中沒有結束符的含義
b,三引號允許一個字串跨多行,字串中可以包含分行符號.定位字元等其他特殊字元(多用於嵌入的代碼,比如html或者SQL)
c,處理Unicode規則:程式中出現字串時一定要加個首碼u;不要用str()函數,用unicode()代替;不要用過時的string模組,它基本上只能正常處理ASCII字元;不到必須時不要再程式裡面編解碼Unicode字元,只在要寫入檔案或者資料庫或者網路時,才調用encode()函數,相應地,只在你需要把資料讀回來的時候才調用decode()函數。