![](../../img/interpret.jpg)
Python 簡易手冊
單元 2 - 標準程式庫
Python 內建大量的功能,這些功能都屬於 Python 標準程式庫 (standard library) ,分成可以直接使用跟需要引入,可以直接使用包括
- 內建函數 (built-in functions) ;
- 內建常數 (built-in constants) ;
- 內建型態 (built-in types) ;
- 內建例外 (built-in exceptions) 。
這個單元以介紹如何使用內建函數及標準程式庫中需要引入的部分為主,至於內建常數、內建型態與內建例外會在後續的單元中介紹。
單元 1 的 hello.py 就用到內建函數 print() , print() 如其英文名用來將引數 (argument) 字串 (string) 顯示在命令列 (command line) 上
1 2 3 4 5 6 7 | print("哈囉,我的朋友!") # 檔名: hello.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 2 月 |
Python 中的字串是用單引號 ' 或是雙引號 " 圍起來的文字內容,單元 33 - 字串會詳細介紹字串的用法。
上面 hello.py 中, print() 的引數字串為 "哈囉,我的朋友!" ,因此會在命令列印出中文打招呼訊息,結果如下
> python hello.py |
哈囉,我的朋友! |
> |
如果要在命令列接收使用者輸入,這可以用另一個內建函數 input() ,將上例改寫如下
1 2 3 4 5 6 7 8 9 10 11 | # 要求輸入暱稱 name = input("請輸入暱稱 ") # 印出歡迎訊息 print("哈囉 " + name + " !") # 檔名: hello2.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 2 月 |
第 2 行, input() 函數 (function) 的引數為直接印出提示字串,因此執行這個程式會先得到以下的結果
> python hello2.py |
請輸入暱稱 ▍ |
在提示字串後可以直接輸入暱稱,例如
請輸入暱稱 Tom▍ |
接下來按下 Enter 鍵,就會印出歡迎訊息,並且在下一行出現命令列的輸入提示符號
哈囉 Tom ! |
> |
利用標準程式庫中 random 的 choice() 函數可以隨機選取引數的元素,繼續將上例 hello2.py 改寫如下 hello3.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # 從標準程式庫 random 引入 choice from random import choice # 內定的英文暱稱 names = ["Tom", "Mary", "Park", "Alice"] # 印出歡迎訊息 print("哈囉 " + choice(name) + " !") # 檔名: hello3.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 2 月 |
第 2 行,這是從 random 引入 choice 的識別字 (identifier) ,也就表示可以在底下使用 choice() 函數
1 2 | # 從標準程式庫 random 引入 choice from random import choice |
from ... import ... 的形式是引入指定的識別字,也就是從程式庫引入指定的功能,可以只用 import ,例如
1 2 | # 從標準程式庫引入 random import random |
這是引入 random 程式庫的識別字,因此如果後續要使用 random 程式庫的功能,就要連帶使用 random 加上小數點 . ,例如下面第 8 行如果是直接引入 random
8 | print("哈囉 " + random.choice(names) + " !") |
如果後面加上關鍵字 as ,就可以替引入的識別字取別名,例如 tkinter 程式庫經常被取別名為 tk
| import tkinter as tk |
繼續看到第 5 行,這是用內建的串列 (list) 資料型態 (data type) 預先設定數個英文暱稱
4 5 | # 內定的英文暱稱 names = ["Tom", "Mary", "Park", "Alice"] |
中括弧由 [ 開始,到 ] 結束,這是串列的字面常數 (literal) ,中括弧內以英文逗號 , 區隔的為串列的元素,單元 39 - 串列會詳細介紹串列的用法。
然後到第 8 行就是用 choice() 函數隨機選取 names 串列中的一個元素,然後利用加號 + 連結前後字串成單一字串,再由這個單一字串作為 print() 的引數
7 8 | # 印出歡迎訊息 print("哈囉 " + choice(names) + " !") |
執行 hello3.py 的結果如下
> python hello3.py |
哈囉 Alice ! |
> |
標準程式庫中的 tkinter 就是用來製作圖形介面的程式,以下為打招呼程式製作成 GUI 的版本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | # 從標準程式庫 random 引入 choice from random import choice # 從標準程式庫引入 Tk from tkinter import * # 從 tkinter 引入 font from tkinter import font # 從 tkinter 引入 ttk from tkinter import ttk # 顯示歡迎訊息的視窗 class Hello(ttk.Frame): # 建構子設定初值 def __init__(self, master=None): # 呼叫父類別的建構子 ttk.Frame.__init__(self, master) # 設定視窗標題 self.winfo_toplevel().title("打招呼") # 內定的英文暱稱 self.names = ["Tom", "Mary", "Park", "Alice"] # 使用格子版面管理員 self.grid() # 設定字型 self.font = font.Font(master, font="SF 48") # 呼叫建立視窗元件的方法 self.createWidgets() # 建立樣式屬性 self.style = ttk.Style() # 設定樣式主題 self.style.theme_use("alt") # 依次取得每一個視窗元件 for child in self.winfo_children(): # 將視窗元件加入邊界 child.grid_configure(padx=5, pady=3) # 建立所有視窗元件 def createWidgets(self): # 建立文字標籤 self.message = Label(self) # 設定文字標籤的文字 self.message["text"] = "你好" # 設定文字標籤的寬度 self.message["width"] = 20 # 設定文字標籤的高度 self.message["height"] = 7 # 設定文字標籤的字型 self.message["font"] = self.font # 設定文字標籤在格子的位置 self.message.grid(row=0, column=0, sticky=N) # 設定按鈕 self.button = ttk.Button(self) # 設定按鈕文字 self.button["text"] = "按我" # 設定按鈕的寬度 self.button["width"] = 40 # 設定按鈕連結的方法 self.button["command"] = self.hello # 設定按鈕在格子的位置 self.button.grid(row=2, column=0, sticky=N) # 顯示歡迎訊息 def hello(self): # 建立歡迎文字 n = choice(self.names) s = "哈囉 " + n + " !" # 將歡迎文字顯示在文字標籤 self.message["text"] = s # GUI 執行部分 if __name__ == '__main__': # 建立 Tk 應用物件 root = Tk() # 建立視窗物件 app = Hello(master=root) # 呼叫維持視窗運作的 mainloop() root.mainloop() # 檔名: hello4.py # 說明: 《Python簡易手冊》的範例 # 網址: http://kaiching.org # 作者: Kaiching Chang # 時間: 2024 年 2 月 |
以上 hello4.py 有 88 行,相比 hello3.py 的行數超過 6 倍,這是因為 GUI 需要設定的細節較多,用類別定義 Tk 應用程式的程式碼行數也會較多,如何定義類別會在單元 54 - 類別開始介紹。
以下為在 Windows 執行 hello4.py 之後出現的視窗
![](tk_demo1.png)
以下為點擊按我之後顯示的結果
![](tk_demo2.png)
本書礙於篇幅,並不會詳細介紹 Tk ,對 Tk 有興趣的話,歡迎參考作者另一本著作《Python 入門指南》,裡頭從 0 起步介紹如何製作 Tk 應用程式。
Python 的標準程式庫有非常豐富的內容,幾乎包辦各種常用功能,因此如果要開發軟體專案,軟體中的各種小功能可以直接套用標準程式庫中已有的功能,從而無須自己從頭發明輪子,如果標準程式庫中沒有或是不符合實際需求,也可以先從廣大的第三方程式庫中尋找,初學程式設計一個重點就是要同時學會使用程式庫,但是不用急著馬上搞懂怎麼設計程式庫,總之碰到就連帶學一點,慢慢累積即可。
參考資料
![](../../img/pydoing.gif)