Python 研究(Dive Into Python)筆記1--第2章 第一個 Python 程序

悲劇了,發現這本書有更新的網絡版本

深入 Python 3

http://woodpecker.org.cn/diveintopython3/

果斷捨棄這個系列,從頭再來

2.2. 函數聲明

首先, 函數聲明以關鍵字 def 開始, 接着爲函數名, 再往後爲參數, 參數放在小括號裏。 多個參數之間 (這裏沒有演示) 用逗號分隔。

其次, 函數沒有定義返回的數據類型。 Python 不需要提定返回值的數據類型;甚至不需要指定是否有返回值。實際上, 每個 Python 函數都返回一個值;如果函數執行過 return 語句, 它將返回指定的值, 否則將返回 None ( Python 的空值) 。

最後需要指出的是, 在 Python 中參數, params 不需要指定數據類型。 Python 會判定一個變量是什麼類型, 並在內部將其記錄下來。

所以說 Python 既是 動態類型定義語言 (因爲它不使用顯示數據類型聲明) , 又是 強類型定義語言 (因爲一旦一個變量具有一個數據類型, 它實際上就一直是這個類型了) 。

2.3. 文檔化函數

三重引號表示一個多行字符串。在開始與結束引號間的所有東西都被視爲單個字符串的一部分, 包括硬回車和其它的引號字符。您可以在任何地方使用它們, 但是您可能會發現它們經常被用於定義 doc string 的情況。

三重引號也是一種定義既包含單引號又包含雙引號的字符串的簡單方法

2.4. 萬物皆對象

2.4.1. 模塊導入的搜索路徑

當導入一個模塊時, Python 在幾個地方進行搜索。 明確的, 它會按所有定義在 sys.path 中的目錄進行搜索。它只是一個list (列表), 您可以容易地查看它或通過標準的list方法來修改它。

2.5. 代碼縮進

Python 函數沒有明顯的 begin 和 end, 沒有花括號, 用於標函數的開始和結束。 唯一的分隔符是一個冒號 (:), 接着代碼本身是縮進的。

代碼塊通過它們的縮進來定義的。我所說的 "代碼塊" 是指:函數、if 語句、for 循環、while 循環, 等等。開始縮進表示塊的開始, 取消縮進表示塊的結束。不存在明顯的括號, 大括號或關鍵字。這就意味着空白是重要的, 並且要一致。在這個例子中, 函數代碼 (包括 doc string) 縮進了 4 個空格。不一定非要是 4, 只要一致就可以了。沒有縮進的第一行則在函數體之外。

2.6. 測試模塊

那麼爲什麼說這個特殊的 if 語句是一個技巧呢?模塊是對象, 並且所有的模塊都有一個內置屬性 __name__。一個模塊的 __name__ 的值要看您如何應用模塊。如果 import 模塊, 那麼 __name__ 的值通常爲模塊的文件名, 不帶路徑或者文件擴展名。但是您也可以像一個標準的程序一樣直接運行模塊, 在這種情況下 __name__ 的值將是一個特別的缺省值, __main__。

一旦瞭解到這一點, 您可以在模塊內部爲您的模塊設計一個測試套件, 在其中加入這個 if 語句。當您直接運行模塊, __name__ 的值是 __main__, 所以測試套件執行。當您導入模塊, __name__ 的值就是別的東西了, 所以測試套件被忽略。這樣使得在將新的模塊集成到一個大程序之前開發和調試容易多了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章