去年夏天開始接觸Python,剛開始覺得這個語言相當簡潔精練,斷斷續續的學了一些基礎知識,打算今年好好地系統學一下。先把以前看深入Python時做的筆記整理一下,以免像以前那樣學了后面的就忘了前面的基礎知識。
第一個Python示例小程序:
| 1 2 3 4 5 6 7 8 9 10 11 12 | defbuildConnectionString(params):    """Build a 
connection string from a dictionary       Returns 
string.    """    return";".join(["%s=%s"%(k,v) 
fork, v 
inparams.items()])if__name__ =="__main__":    myParams 
={"server":"temp",\                "database":"db_temp",\                "uid":"sa",\                "pwd":"dont know"}    printbuildConnectionString(myParams) | 
運行結果:
| >>> 
pwd=secret;database=master;uid=sa;server=mpilgrim | 
函數聲明
首先,函數聲明以關鍵字def開始,接著為函數名,然后為參數,參數放在小括號里,多個參數之間用逗號分隔。
其次,函數沒有定義返回的數據類型,Python不需要指定返回值的數據類型;甚至不需要指定是由有返回值。實際上,每個Python函數都返回一個值,如果函數執行過return語句,它將返回指定的值,否則將返回None空值。在Python中參數不需要指定數據類型,Python會判定一個變量是什么類型,并在內部將其記錄下來。
文檔化函數
可以通過給出一個 doc string (文檔說明的字符串) 來文檔化一個 Python 函數。定義 buildConnectionString 函數的 doc string
| 1 2 3 4 5 | defbuildConnectionString(params): """Build a 
connection string from a dictionary of parameters. Returns 
string.""" | 
三重引號表示一個多行字符串。在開始與結束引號間的所有東西都被視為單個字符串的一部分,包括硬回車和其它的引號字符。您可以在任何地方使用它們,但是您可能會發現,它們經常被用于定義 doc string。
在三重引號中的任何東西都是這個函數的 doc string,它們用來說明函數可以做什么。如果存在 doc string,它必須是一個函數要定義的第一個內容 (也就是說,在冒號后面的第一個內容)。在技術上不要求給出函數的 doc string,但應該盡可能為每個函數都添加doc string,它 在運行時可作為函數的屬性。
萬物皆對象
在Python中,函數同其它東西一樣也是對象(剛開始覺得很新奇)。
| 1 2 3 4 5 6 7 | >>> 
importodbchelper (1)>>> 
params ={"server":"mpilgrim", "database":"master", "uid":"sa", "pwd":"secret"}>>> 
printodbchelper.buildConnectionString(params) (2)server=mpilgrim;uid=sa;database=master;pwd=secret>>> 
printodbchelper.buildConnectionString.__doc__ (3)Build a 
connection string froma dictionary  Returns 
string. | 
(1)第一行將 odbchelper 程序作為模塊導入。模塊是指一個可以交互使用,或者從另一 Python 程序訪問的代碼段。 只要導入了一個模塊,就可以引用它的任何公共的函數、類或屬性。模塊可以通過這種方法來使用其它模塊的功能。
(2)當使用在被導入模塊中定義的函數時,必須包含模塊的名字。所以不能只使用 buildConnectionString,而應該使用 odbchelper.buildConnectionString。
(3)訪問函數的 __doc__ 屬性并不是通過函數調用。
代碼縮進
Python 函數沒有明顯的 begin 和 end,沒有標明函數的開始和結束的花括號。唯一的分隔符是一個冒號 (:),接著代碼本身是縮進的。
代碼塊是通過它們的縮進來定義的。這里所說的“代碼塊”是指:函數、if 語句、for 循環、while 循環,等等。開始縮進表示塊的開始,取消縮進表示塊的結束。不存在明顯的括號,大括號或關鍵字。
測試模塊
所有的 Python 模塊都是對象,并且有幾個有用的屬性。可以使用這些屬性方便地測試你所編寫的模塊。下面是一個使用 if __name__ 的技巧。
| if__name__ =="__main__": | 
首先,if 表達式無需使用圓括號括起來。其次,if 語句以冒號結束,緊跟其后的是縮進代碼。
模塊是對象,并且所有的模塊都有一個內置屬性 __name__。一個模塊的 __name__ 的值取決于你如何應用模塊。如果 import 模塊,那么 __name__ 的值通常為模塊的文件名,不帶路徑或者文件擴展名。但是你也可以像一個標準的程序一樣直接運行模塊,在這種情況下 __name__ 的值將是一個特別的缺省值,__main__,這樣你可以很方便地測試單個模塊。
