要素8、函數的創建與調用
函數是實現模塊化編程的基本組件
Python使用def語句定義函數
def functionName(arguments):
suite
- 函數可以參數化,通過傳遞不同的參數來調用
- 每個Python函數都有一個返回值,默認爲None,也可以使用“return value”明確定義返回值
- def語句會創建一個函數對象,並同時創建一個指向函數的對象引用
- 函數也是對象,可以存儲在組合數據類型中,也可以作爲參數傳遞給其他函數
callable()可用於測試函數是否可調用
Python有衆多內置函數:
- dir(_ _ builtin _ _) 可查看所有內置函數,可用help()獲取詳細使用信息
- Python標準庫擁有衆多內置模塊,這些模塊擁有大量函數
- 導入模塊使用import語句進行,後跟模塊名稱(不能指定模塊文件名的後綴.py)
導入一個模塊後,可以訪問其內部包含的任意函數、類及變量
Python編程風格
註釋:
- #:可以從一行的任何地方開始
續行:
- \:
- ”’:閉合操作符,單一語句跨多行,實現多行註釋(3個引號)
代碼組:
- 縮進相同的一組語句構成的一個代碼塊
- 首行以關鍵字開始,如if,while等,以冒號結束
- Python使用縮進來分割代碼組,同一代碼組的代碼行必須嚴格左對齊,否則會造成語法錯誤
同一行放置多個語句:
- ; :以分號作爲分隔符
模塊:
- 每一個Python腳本文件都可以被當成是一個模塊
- 模塊裏的代碼可以是一段直接執行的腳本,也可以是一些類似庫函數的代碼從而可由別的模塊執行導入(import)
標識符:
- 標識符是計算機語言中允許作爲名字的有效字符串集合
- 其中有一部分是關鍵字,它們是語言的標識符,因此是保留字,不能用於其他用途
- Python還有稱爲“內建”的標識符集合,雖不是保留字,仍不推薦使用這些特別的名字
Python標識符:
- 第一個字符只能使用字母或下劃線
- 餘下的字符可以使用字母、數字或下劃線
- 區分字符大小寫
Python編程常見習慣
註釋:
- 既不能缺少註釋,亦要避免過渡註釋
文檔:
- Python允許通過_ _ doc_ _動態獲得文檔字串
縮進:
- 統一縮進4個字串
標識符名稱:
- 見名知意
Python風格指南:
Python命名慣例:
- 以單一下劃線開頭的變量名(_x)不會被from module import*語句導入
- 前後有下劃線的變量名(_ x _)是系統定義的變量名,對pythono解釋器有特殊意義
- 以兩個下劃線開頭但結尾沒有下劃線的變量名(__x)是類的本地變量
- 交互式模式下,變量名”_ “用於保存最後表達式的結果
主程序:
- 無論當前模塊是被別的模塊導入還是作爲腳本直接執行,都會執行這部分代碼
注意:
- 所有的模塊都有能力執行代碼
- 最高級別的Python語句(沒有縮進的)在模塊被導入時就會執行,無論是否真的需要執行
- 妥當的做法:除了那些真正需要執行的代碼以外,所有的功能代碼都通過函數建立,因此:
僅在主程序模塊中編寫大量的頂級可執行代碼
用於被導入的模塊只應該存在較少的頂級執行代碼 - 每個模塊都有一個名爲_ _ name _ _的內建變量,此變量值會根據調用此模塊的方式發生變化:
如果此文件被作爲模塊導入,則_ _ name _ _的值爲模塊名稱
如果此文件被直接執行,則_ _ name _ _ 的值爲” _ _ main _ _”