參考書籍:《Python3程式開發指南》第二版
學習平台:windows
內建資料類型與標準庫資料類型唯一的區別在於,對於後者,我們必須首先匯入相關的模組,並且必須使用模組名對資料類型名進行限定。
Python中的標識符與關鍵字
我們學習每一種程式設計語言,都是從最開始的標識符(還有傳說中的Hello World),關鍵字開始的,學習Python也不例外。
Python標識符必須符合三條規則:
- 1.標識符區分大小寫,只要是Unicode編碼的字母就好了。其實這種問題,在實際編程過程中不會有問題的;
- 2.Python標識符不能與Python關鍵字同名;
- 3.關於底線(_)的使用,名的開頭和結尾都使用底線的情況(_)應該避免使用;在Python內部定義了各種特殊方法和變數,使用的就是這樣的名稱;
Integral類型
Python提供了兩種內建的Integral類型:int和bool。
布林運算式
0與False表示False,其它任意整數與True都表示True。在數字表示中,True表示1,False表示0;
整數
預設是十進位的;位元以0b引導,八進位以0o引導,十六進位數以0x引導。
浮點類型
Python提供了3種浮點值:內建的float與complex類型,以及來自標準庫的decimal.Decimal類型,這3種資料類型都是固定。如果我們確實需要高精度,那麼可以使用來自decimal模組的decimal.Decimal類型。
浮點數
匯入sys模組,sys.float_info對象有許多浮點類型的屬性。
複數
複數這種資料類型是固定的,其中存放的是一對浮點數,一個表示實數部分,另一個表示虛數部分。
Decimal類型
要建立Decimal類型,必須先匯入decimal模組。十進位數使用decimal.Decimal()函數建立的,該函數可以接受一個整數或字串作為參數;
字串
字串是使用固定不變的str資料類型表示的,其中存放Unicode字元序列。str資料類型可以作為函數進行調用,用於建立字串對象—-參數
為空白時返回一個Null 字元,參數為非Null 字元串類型時返回該參數的字串形式,參數為字串時返回該字串的拷貝。str()函數也可以用作一個轉換函式。
使用r修飾的字串,在這種字串內部,所有字元都按其字面意義解釋,因此不再需要進行轉義。
字串很長,包含多行,不使用三引號包含的字串,有兩種方法:
- 1.t = “i love you” + \
“i love you, baby.”.
- 2.s = (“i love you”
“together; i love you.”).
由於.py檔案預設使用UTF-8 Unicode編碼。
內建函數ord()將字元轉換成Unicode編碼中某個字元的整數值。
內建函數chr()將Unicode編碼中某個字元的整數值轉換成Unicode編碼。
字元換比較
支援<,<=,==,!=,>與>=
字串分步與步距
可以使用[]來存取操作字串中的單個字元。
負索引是很有用的,尤其是-1,這個值總是代表字串的最後一個字元。
提取分區:
seq[start]
seq[start:end]
seq[start:end:step]
seq可以是任意序列,比如列表,字串或元組。
在涉及很多字串時,使用+進行串連、使用+=進行追加等操作並不是特別高效,如果需要串連大量的字串,通常最好使用str.join()方法。
字串操作符與方法
字串是固定序列,所有用於固定序列的功能都可用於字串,包括使用in進行成員關係測試。
使用len()返回字串中的字元數
join()方法以一個序列作為參數(字串列表或字串元組),並將其串連在一起存放在一個單獨的字串中。
>>> test = ["jelly", "think", "|", "思想的果凍", "www.jellythink.com"]>>> " ".join(test)'jelly think | 思想的果凍 www.jellythink.com'
join()方法也可以與內建的reversed()函數一起使用,以實現對字串的反轉。但是,通過步距也可以更精確地擷取同樣的結果,比如:s[::-1]
‘*’操作符提供了字串複製功能
在用於字串時,如果成員關係操作符in左邊的字串參數是右邊字串參數的一部分,或者相等,就返回True。
>>>test = "JellyThink">>>"Jelly" in testTrue
str.index和str.find
如果需要在某個字串中找到另一個字串所在的位置,有兩種方法:
- 使用str.index()方法。返回子字串的索引位置,或者在失敗時產生一個ValueError異常;
- 使用str.find()方法。該字串返回字串的索引位置,或者在失敗時返回-1;
這兩個函數都有兩個選擇性參數,指定開始位置和結束位置。
strip
strip()可以剝離兩邊的空白字元,有lstrip()和rstrip()。可以使用一個字串作為參數來調用剝離方法,這樣參數中出現的每個對應字元都會被消除。
replace
str.replace()方法來在字串內進行替換,這一方法以兩個字串作為參數,並返回該字串的副本(其中第一個字串的所有出現都被第二個字串所替換)。
split
分割字串使用str.split()方法。並以待分割的字串作為第一個參數,以要分割的最大子資料區段數為可選的第二個參數。
使用str.format()方法進行字串格式化
str.format()方法會返回一個新字串,在新字串中,原字串的替換欄位被適當格式化後的參數所替代。
每個替換欄位都是由包含在花括弧中的欄位名標識的。如果欄位名是簡單的整數,就將被作為傳遞給str.format()方法的一個參數的索引位置。因此,在這種情況下,名為0的欄位被第一個參數所代替,名為1的欄位則被第二個參數所代替。
如果試圖連接字串與數字,那麼python將產生TypeError異常,但是使用str.format()方法可以很容易地做到這一點。
>>>"{who} turned {age} this year".format(who="she", age=88)'she turned 88 this year'>>>"The {who} was {0} last week".format(12, who="boy")'The boy was 12 last week'
欄位名可以引用集合資料類型,比如,列表;在這種的情況下,我們可以包含一個索引來標識的資料項目。
>>>stock = ["paper", "envelopes", "notepads", "pens"]>>>"we have {0[1]} and {0[2]} in stock".format(stock)'we have envelopes and notepads in stock'
Python字典中儲存的key-value項,也可以用於str.format()方法。
其它知識補充字元編碼
與UTF-8不同的是,UTF-16文本應該以一個位元組順序標記開始,以便用於讀取該文本的代碼可以判定位元組對是big-endian還是little-endian.
str.encode()方法可以返回一個位元組序列——實際上是一個bytes對象。使用這一方法,可以更好地理解不同編碼格式之間的差別。
對於str.encode()方法,還有兩點值得注意。第一個參數(編碼名稱)是大小寫不敏感的,第二個參數指定錯誤處理方式,如果為”ignore”,”replace”,那麼可以將任何字串編碼為ASCII格式。
str.encode()方法的對應方法是bytes.decode()或者bytearray.decode(),該方法將返回一個字串,其中使用給定的編碼格式對位元組進行解碼。
在Python中,至少有兩個Python包可用於檢測檔案的編碼格式。
csv處理
Python有一個強大的csv處理模組。
2013/1/31 於東軟-大連
=====================================================================
如果喜歡,請關註:JellyThink | 思想的果凍
更多原創精彩博文,盡在www.jellythink.com
還可以關注新浪微博:http://weibo.com/u/1887014677
=====================================================================