一、下載安裝
最新版本:2.4.2
Windows
下載 Python-2.4.2.exe,運行安裝
http://www.python.org/ftp/python/2.4.2/python-2.4.2.msi
其它平臺
下載 Python-2.4.2.tgz 或 Python-2.4.2.tar.bz2,
tar -zxvf Python-2.4.2.tgz 或bzcat Python-2.4.2.tar.bz2 | tar -xf -
./configure
make
make install
二、語法
1、函數聲明
關鍵字 def 為函數聲明的開始,不區分有返回值的函數與無返回值的函數。它沒有子程序,全部都是函數。
函數沒有定義返回的數據類型。如果函數執行了一個 return 語句,它將返回一個值,否則會返回 None (Python的空值)。
參數 params 并不需要指明數據類型
2、文檔字符串
任何在三重雙引號中的東西都是函數的文檔字符串,它們用來說明函數可以做什么。
如果存在文檔字符串,它必須要在函數中的被首先定義(也就是說在冒號后面被定義)。
文檔字符串在運行時可作為函數的屬性。
3、在Python中每個東西都是對象
并且幾乎每個東西都有屬性和方法。
所有的函數都有一個內置的屬性 __doc__,它會返回在函數源代碼中定義的文檔字符串。
4、縮排代碼
Python函數沒有明顯的 begin 或 end,或任何括號或大括號來標識函數開始結束。唯一的分隔是通過一個冒號(:)和代碼本身的縮排來表示。
代碼塊(函數,if 語句,for 循環,等等)通過它們的縮排來定義。縮排表示塊的開始,非縮排表示結束,不存在明顯的括號,大括號,或關鍵字。這就意味著空白是有意義的,并且要一致。
5、if __name__
在 if 表達式周圍不需要小括號
象C語言一樣,Python使用 == 進行比較,使用 = 進行賦值。
模塊是對象,并且所有的模塊都有一個內置屬性 __name__。如果 import 模塊,那么 __name__ 的值通常為模塊的文件名,不帶路徑或者文件擴展名。如果直接運行模塊, __name__ 的值將是一個特別的缺省值, __main__。
通過在程序中加入下一個if,就可以很簡單地實現單元測試。
if __name__ == "__main__":
6、字典
Python的內置數據類型之一是字典,它在關鍵字與值之間定義了一對一的關系。這一點就象Perl中的關聯數組,Java中的 Map ,或VBScipt中的 Scripting.Dictionary 對象。如:
>>> d = {"server":"mpilgrim", "database":"master"}
1)每一個元素都是一個鍵-值對,整個元素集合用大括號括起來,賦值給變量d.
2)server 是一個鍵字,它所關聯的值為 mpilgrim,用 d["server"] 來引用.
3)你可以通過鍵字來得到值,但是不能通過值得到鍵字。
>>> d["database"] = "pubs"
4)可如上式一樣修改字典.
5)不能在一個字典中有重復的鍵字。給一個存在的鍵字賦值會抹掉原來的值。
6)可以在任何時候加入新的鍵-值對。這種語法同修改存在的值一樣。
7)字典沒有元素順序的概念。
8)字典的值可以是任意數據類型,包括字符串,整數,對象,或者甚至其它的字典。
9)字典的關鍵字要嚴格一些,但是它們可以是字符串,整數和幾種其它的類型
>>> del d['server']
10)可如上式一樣刪除元素
>>> d.clear()
11)可如上式一樣清空所有元素
7、列表
1)個列表是一個用方括號包括的有序元素集。
>>> li = ["a", "b", "mpilgrim", "z", "example"]
2)可如上式定義列表
3)一個列表可以象一個以0開始的數組一樣使用。任何一個非空列表的第一個元素總是 xxx[0]。
4)負數索引從列表的尾部開始向后計數存取元素。li[n] == li[n – len(li)],如:
>>> li[-3]
結果為"mpilgrim"。
5)任何一個非空的列表最后一個元素總是 li[-1]。
6)你可以通過指定2個索引得到列表的子集,叫做一個“分片”。返回值是一個新的列表,它包含了列表中按順序從第一個分片索引開始,直到但是不包括第二個分片索引的所有元素。
7)如果一個或兩個分片索引是負數,分片也可以工作,但如果兩個索引的所代表的位置大者在前則返回空列表。
8)如果任一個分片索引為0,你可以將其省略,默認為0。所以li[:3]同li[0:3] 一樣。
9)li[:n] 將總是返回前 n 個元素,而 li[n:] 將返回其它的元素。
10)如果兩個分片索引均省略,將包括列表的所有元素。但是與原始的列表 li 不是同一個,它是一個新的列表,恰好擁有與 li 全部一樣的元素。li[:] 是生成一個列表拷貝的縮寫。
11)append 增加單個元素到列表的尾部。如:
>>> li.append("new")
12)insert 在列表中插入單個元素。數值參數是使得列表增加的第一個元素的索引(注意,不是序號).如下:
>>> li.insert(2, "new")
13)列表元素不需要唯一
14)用extend 連接列表。注意不要用多個參數調用 extend ,要使用一個列表參數調用。如下:
>>> li.extend(["two", "elements"])
15)index 在列表中查找值第一次的出現并返回索引值
>>> li.index("example")
16)如果在列表中沒有找到值,Python會引發一個異常
17)要測試一個值是否在列表內,使用 in,如果值找到了,它返回 1 ,或者沒找到則為 0 。(在Python中不存在布爾類型。在一個布爾上下文中(象 if 語句),0 是假,所有其它的數值為真。這一點也可以擴展到其它類型。一個空串(""),一個空列表([]),和一個空字典({})都是假,所有其它的字符串,列表,和字典是真。)如:
>>> "new" in li
18)remove 從列表中除掉第一次出現的值。(僅第一次出現的值),如:
>>> li.remove("new")
19)如果在列表中沒有找到值,Python引發一個異常。它反映了 index 方法的行為。
20)用pop除掉列表的最后一個元素,然后返回除掉的值。注意這一點同 li[-1]不同,后者返回一個值但不改變列表,也不同于 li.remove(value),后者改變列表但不返回值。如:
>>> li.pop()
21)列表也可以用 + 操作符連接起來。list = list + otherlist 相當于 list.extend(otherlist)。但是 + 操作符將連接后的列表作為一個值返回,而 extend 僅修改存在的列表。如:
>>> li = li + ['example', 'new']
22)Python支持 += 操作符。li += ['two'] 相當于 li = li + ['two']。+= 操作符可用于列表,字符串,和整數,并且它也可以在用戶定義類中被重載。
23)* 操作符作為一個重復符可用在列表上。li = [1, 2] * 3 相當于 li = [1, 2] + [1, 2] + [1, 2], 將三個列表連成一個。
8、序列
1)序列是不可變列表。一旦創建了一個序列就不能以任何方式改變它。
2)序列的定義同列表的定義方式相同,除了整個元素集是用小括號包圍的而不是方括號
3)當分割一個列表時,會得到一個新的列表;當分割一個序列時,會得到一個新的序列。
4)序列沒有方法,所以不能查找、刪除和增加元素,但可以用in來檢查元素是否在序列里。
5)序列比列表操作速度快。
6)序列可以在字典中被用作關鍵字,但是列表不行。
7)內置的 tuple 函數接收一個列表,返回一個有著相同元素的序列。而 list 函數接收一個序列,返回一個列表。從效果上看,tuple 凍結一個列表,而 list 解凍一個序列。
8)序列用在字符串格式化.
9、變量
1)Python象大多數其它語言一樣有局部和全局變量,但是它沒有明顯的變量聲明。變量通過賦值產生,當超出作用范圍時自動消滅。
2)當一條命令用續行符(“\”)分割成多行時,后續的行可以以任何方式縮排,Python通常的嚴格的縮排規則不需遵守。
3)嚴格地講,在小括號,方括號或大括號中的表達式(如定義字典)可以用或者不用續行符(“\”)分割成多行。
4)Python不允許你引用一個未被賦值的變量,試圖這樣做會引發一個異常。
10、字符串格式化
1)基本語法如下:
"帶占位符的字符串" % (參數序列)
2)試圖將一個字符串同一個非字符串連接會引發一個異常。字符串連接只能在每個都是字符串時起作用。此時選擇格式化串會是個不錯的主意。
11、映射
1)基本語法如下:
[ 函數或表達式 for 循環變量 in 列表/序列 ]
2)映射是通過循環遍歷一個列表/序列,并對每個元素應用一個函數,然后返回一個包含為計算后的值的新列表。
3)注意列表映射不改變被映射的列表。
4)新列表擁有與原有列表/序列擁有相同數量的元素數