Python 入門指南 5.0
單元 2 - 如何執行 Python 程式
原始碼 (source code) 檔案就是我們寫程式 (program) 所用的 .py 檔案,原始碼檔案經過直譯器 (interpreter) 直接逐行執行,無須額外編譯 (compile) 成執行檔,這種方式就叫做直譯 (interpret)
↓
interpreting
我們看到以下單元 1 的範例 demo.py
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | o = object()
# 於命令列印出訊息
print()
print(o)
print(".. 以上是 object 型態物件的字串形式")
print()
print("程式結束 ....")
print()
# 檔名: demo.py
# 說明:《Python入門指南》的範例程式
# 網站: http://kaiching.org
# 作者: 張凱慶
# 時間: 2023 年 5 月
|
Python 程式檔案依習慣都是儲存為 UTF-8 編碼,若儲存的不是 UTF-8 編碼,就需要額外加上編碼宣告。
以下利用 python 指令在命令列執行 demo.py
$ python demo.py |
<object object at 0x104a48180> |
.. 以上是 object 型態物件的字串形式 |
程式結束 .... |
$ |
上面用的指令為 python ,這是以建立模擬環境的方式執行 Python 直譯器,因此可以直接使用指令 python ,如果系統已經預先安裝 Python 2 ,指令就直接是 python ,後來安裝 Python 3 之後的版本,指令需要改用 python3 或 python3.x , x 為版本號。
如果是直接安裝 Python 3 的最新版本,就不會有新舊版本並存的問題,此時的執行指令 python 就是執行 Python 3 的最新版本。
如果用安裝 Python 直譯器隨附的 IDLE 執行 demo.py ,結果如下
其他推薦給新手的 Python IDE 為 Thonny , Thonny 中除了可開啟路徑視窗、一鍵執行外,還有額外的英文協助功能,以下為 Thonny 執行的結果
基本上執行程式的首選是命令列,因為命令列是直接跟電腦作業系統互動,而 Thonny 或其他 IDE 比較像是另外建立的模擬環境,雖說模擬環境並不會破壞本來的系統設置,但由於是模擬的,模擬環境不出錯不等於在作業系統中不出錯,因此有可能會有系統跟模擬環境不一致的情況。
所謂直譯係指程式從上而下,一行接著一行的逐行被執行,如果程式中有語法錯誤 (syntax error) ,直譯器就會暫停執行,並且印出錯誤訊息,例如我們將第 6 行結尾漏掉右邊的小括弧
6 | print(".. 以上是 object 型態物件的字串形式"
|
執行時會直接停止,並且印出錯誤訊息
$ python demo.py |
File "demo.py", line 7 |
print() |
^ |
SyntaxError: invalid syntax |
$ |
這是說解析到第 7 行的時候,發現有語法錯誤,錯誤實際在第 6 行,因此停止執行程式。
因為這程式很簡單,所以 Python 直接檢查完語法才執行,如果程式複雜點,就會先檢查一部分可執行先執行,遇到錯誤才停止執行。
是的,我們是把程式寫在 .py 檔案之中,其實 Python 還有個互動式介面,這在命令列打入 python 指令就可啟動
$ python |
Python 3.11.3 (v3.11.3:f3909b8bc8, Apr 4 2023, 20:12:10) [Clang 13.0.0 (clang-1300.0.29.30)] on darwin |
Type "help", "copyright", "credits" or "license" for more information. |
>>> |
如果要離開 Python 的互動式介面,請輸入指令 exit() 或 quit() 。
互動式介面可以當簡單的計算機,或是可以拿來測試某段小程式,許多網路教材也都是顯示互動介面的結果為主。可是我們不打算使用這個介面,原因很單純,因為如果我們要發展一個完整的軟體 (software) ,在這樣的互動介面下,一行指令一個結果是難以完成的,即使先帶讀者使用互動介面,將來也勢必切換回寫程式到 .py 檔案之中。
所以我們直接帶讀者寫副檔名為 .py 的 Python 程式。第一個 demo.py 相當簡單,連續使用 print() 印出訊息,只有使用字串 (string) 一種資料型態 (data type) 的字面常數 (literal) ,其實 Python 還有很多種資料型態,另外除了字面常數也有變數 (variable) ,下面我們繼續來看看資料型態與變數吧!
中英文術語對照 | |
---|---|
編譯 | compile |
資料型態 | data type |
直譯 | interpret |
直譯器 | interpreter |
字面常數 | literal |
程式 | program |
軟體 | software |
原始碼 | source code |
字串 | string |
語法錯誤 | syntax error |
變數 | variable |
重點整理 |
---|
1. 於命令列執行 Python 程式的指令為 python3 或 python ,端視系統是否有先安裝 Python 的舊版本。 |
2. Python 是直譯的程式語言,執行方式為依原始程式檔案,從上而下,一行接著一行執行。 |
3. 執行 Python 程式若遇到語法錯誤,便會停止執行並且印出錯誤訊息。 |
4. Python 直譯器也有提供互動式介面,可於互動式介面直接測試語法或小程式。 |
問題與討論 |
---|
1. 直譯與編譯的差別在哪裡?直譯的程式語言相較編譯的程式語言有什麼優點及缺點? |
2. 語法錯誤是程式錯誤的其中一大類,程式還有哪幾種可能會發生的錯誤呢? |
3. 互動式介面有什麼優缺點呢?除了命令列之外, Python 通常也有提供 IDLE ,也就是圖形視窗的互動式介面,比較一下互動式介面與直接執行 .py 檔案的差異。 |
練習 |
---|
1. 將 demo.py 的內容逐一輸入在互動式介面,比較直接執行與在互動式介面執行的結果有何不同? |
2. 於命令列執行「單元 1」練習的 exercise0101.py ,比較與 demo.py 的執行結果有何不同? |
3. 同上,改成執行「單元 1」練習的 exercise0102.py 。 |
4. 同上,改成執行「單元 1」練習的 exercise0103.py 。 |
5. 同上,改成執行「單元 1」練習的 exercise0104.py 。 |
6. 同上,改成執行「單元 1」練習的 exercise0105.py 。 |
7. 同上,改成執行「單元 1」練習的 exercise0106.py 。 |
8. 同上,改成執行「單元 1」練習的 exercise0107.py 。 |
9. 同上,改成執行「單元 1」練習的 exercise0108.py 。 |
10. 同上,改成執行「單元 1」練習的 exercise0109.py 。 |