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