Python 已經內建大多數常用的功能,更多的功能都放在標準模組庫 (standard library) 裡
例如以下程式示範時間、日期方面的模組 (module)
001 | import datetime |
002 | |
003 | now = datetime.datetime.now() |
004 | year = datetime.date.today().strftime("%Y") |
005 | month = datetime.date.today().strftime("%B") |
006 | wday = datetime.date.today().strftime("%A") |
007 | |
008 | print("Current date and time: ", now) |
009 | print("Current year: ", year) |
010 | print("Month of the year: ", month) |
011 | print("Day of the week: ", wday) |
012 | |
013 | # 檔名: library_demo.py |
014 | # 作者: Kaiching Chang |
015 | # 時間: July, 2014 |
datetime 中 datetime 物件的 now() 方法回傳在地現在日期、時間的格式化字串, date 物件的 today() 回傳在地今日的日期物件, strftime() 方法回傳格式化日期字串。
執行結果如下
以下程式示範正規運算式 (regular expression) 方面的模組
001 | import re |
002 | |
003 | str = "There is no spoon." |
004 | |
005 | v1 = re.sub(r"a", "e", str) |
006 | v2 = re.sub(r"e", "i", v1) |
007 | v3 = re.sub(r"i", "o", v2) |
008 | v4 = re.sub(r"o", "u", v3) |
009 | v5 = re.sub(r"u", "a", v4) |
010 | |
011 | print(v5) |
012 | |
013 | # 檔名: library_demo2.py |
014 | # 作者: Kaiching Chang |
015 | # 時間: July, 2014 |
re 中的 sub() 函數 (function) 用來作字串 (string) 替換,此例將 str 中的所有母音字母都換成 a 。
執行結果如下
另外像預設的浮點數 (floating-point number) 可能會有誤差,這時使用 decimal 模組就可以完全避免誤差的產生,例如
001 | from decimal import * |
002 | |
003 | print() |
004 | print(round(0.7 * 1.05, 2)) |
005 | print(round(Decimal("0.7") * Decimal("1.05"), 2)) |
006 | print() |
007 | print(1.00 % 0.10) |
008 | print(Decimal("1.00") % Decimal("0.10")) |
009 | print() |
010 | print(1 / 7) |
011 | print(Decimal("1") / Decimal("7")) |
012 | print() |
013 | |
014 | # 檔名: library_demo3.py |
015 | # 作者: Kaiching Chang |
016 | # 時間: July, 2014 |
執行結果如下
有些誤差很小,有些誤差難以預期,如果使用標準模組庫的 decimal 就沒有誤差的問題了。
依官方的 Library Reference ,其他還有
- 文字處理
- 二進位資料處理
- 其他資料型態
- 數字及數學相關
- 函數程式設計
- 檔案及目錄存取
- 資料儲存與資料庫
- 檔案壓縮與存檔
- 檔案格式
- 密碼相關
- 作業系統服務
- 並行計算
- 網路相關
- 標記語言工具
- 網路協定相關
- 多媒體
- 程式框架
- 圖形介面
- 開發工具
- 除錯工具
- 執行時期服務
- 直譯器相關
- 模組引入
- Python 語言服務
- MS 系統服務
- Unix 系統服務
標準模組庫幾乎涵蓋各種應用,我們接下來要替 Encrypt 類別 (class) 發展一個圖形介面 (graphical interface) ,就是用標準模組庫中的 tkinter 模組,這是跟 Tk 圖形介面程式庫連結的模組,讓使用者 (user) 可以輕鬆的編碼、解碼囉!
中英文術語對照
標準模組庫 | standard library |
模組 | module |
正規運算式 | regular expression |
函數 | function |
字串 | string |
浮點數 | floating-point number |
類別 | class |
圖形介面 | graphical interface |
使用者 | user |
重點整理
- 標準模組庫具備各方面的應用,包括文字處理、二進位資料處理、數字及數學相關、函數程式設計、檔案及目錄存取等等。
- datetime 為時間、日期方面的模組。
- re 為正規運算式方面的模組。
- decimal 模組可避免浮點數的誤差。
- 標準模組庫在 GUI 方面整合 Tk ,模組庫名稱為 tkinter 。
問題與討論
- 為什麼要有標準模組庫?難道不能把所有功能都直接內建嗎?
- 為什麼預設的浮點數型態會有誤差?這誤差是怎麼造成的呢?
練習
- 承接上一個單元的猜數字遊戲,將新程式寫在 guessgame.py 中,整合 find_number() 及 ab_counter() 使之成為 GuessGame 類別的方法,注意參數的數量可能會有改變。
- 承上題,繼續完成 GuessGame 類別,新增一個 run() 方法,將命令列的執行部分寫在 run() 裡。
the end
沒有留言:
張貼留言