Python 速查手冊

1.5 縮排與空白字元

本書已有新版,請參考 Python 簡易手冊 - 目錄

縮排 (indentation) 是 Python 區分程式區塊 (block) 的方式,所謂程式區塊是程式中具有特定功能之處,程式區塊依據條件真或假的結果個別執行。所謂縮排也就是在程式碼開頭的地方多出一些空格數,大多會用 2 到 6 個空格之間,通常縮排的空格數為 4 個。

什麼時候需要縮排呢?在控制結構中的複合陳述就會需要用到縮排,例如利用 if 進行條件 (condition) 判斷

if 3 > 2:
    print("3>2")

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:indent01.py
# 功能:示範控制結構中的縮排
# 作者:張凱慶

因為這裡要把條件成立時才會執行的程式碼放在 if 底下縮排的部分,所以條件成立時, if 底下縮排的程式碼 (code) 才會執行,如果條件不成立的話,直譯器就會跳過 if 底下縮排的程式碼,直接去找下面沒有縮排的程式碼繼續執行。

於命令列執行以上程式,結果如下

$ python3 indent01.py
3>2
$

另外在函數 (function) 及類別 (class) 定義中也會需要用到縮排,例如這裡定義了 demo() 函數,在關鍵字 def 的下一行縮排,縮排的內容就是函數內容,相對沒有縮排的程式碼就不是函數的定義內容。

def demo():
    print("hello")

demo()

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:indent02.py
# 功能:示範函數定義中的縮排
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 indent02.py
hello
$

Python 程式除了需要區分縮排跟沒有縮排以外,縮排的格數也要一致,不然會發生錯誤的情況。

例如這裡定義的 demo() 函數,底下第一行縮排用了 4 格,第二行卻用了 3 格

def demo():
    print(a)
   print()

demo()

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:indent03.py
# 功能:示範錯誤的縮排
# 作者:張凱慶

執行時會立即跳出錯誤顯示,告訴我們縮排格數表示不同的層級,每個層級的意義都不同,因此發生錯誤。

於命令列執行以上程式,結果如下

$ python3 indent03.py
  File "indent03.py", line 3
    print()
          ^
IndentationError: unindent does not match any outer indentation level
$

最後來討論一下縮排用的空白字元,縮排可以用空白鍵或是 tab 鍵,多數場合 1 個 tab 鍵會表示 4 個空白鍵的效果,也就是 4 個空格,大多數的文字編輯器或整合開發環境也會自動轉換,可是有些文字編輯器或整合開發環境會嚴格區分兩者,導致 tab 鍵仍是 tab 鍵,因此換到不同的開發環境就會發生縮排很長或很短的情況,或是縮排層級異常,所以建議縮排一律使用空白鍵,並且縮排的每個層級都保持一致的空格數。

相關教學影片

上一頁: 1.4 關鍵字與識別字
Python 速查手冊 - 目錄
下一頁: 1.6 運算子
回 Python 教材首頁
回程式語言教材首頁