學了python之後發現了一個比較有意思的東西,那就是pass語句,這個東西還是比較獨特的,從字面上理解,就是過,也可以理解為什麼都沒有,既然什麼都沒有為什麼還要有一個pass語句呢?想解釋這個問題,先看看比較嚴格的一個函數,有這樣一個函數:
[func_def] [return values] [func_name] (params){}
這個函數有返回值類型,有函數名,有參數,有函數體(在{}之中,這個函數體為空)。這個函數沒有使用pass語句,這裡只定義了一個函數,其他什麼事情都沒做。如果使用python寫一個函數,是這樣的:
def func_name(params): pass
這個函數跟前一個函數看起來大同小異,跟前一個函數做一下比較可以發現,前一個函數有{}界定符,後一個函數有:界定符,關鍵是{}裡可以什麼都沒有,但:後面必須得有語句,不然就會報錯。我們知道python通過:來確定一個結構,假想一下,有函數定義符def和:,這個結構應該是確定的了,但是奇怪的是:後面沒有其他語句這個函數就通不過語法檢查。我們再來看一些代碼:
大家猜一下這兩句代碼是什麼意思,比較懂的人就會說這是一個函數,調用時就會列印一個空行,仔細觀察一下,發現print()只空了一格,跟大家約定的四格不一致,假如def func():這行代碼之前還有很多代碼,然後碼者本人想空這個函數,但是他忘了加pass語句,然後空了一格繼續寫代碼,碼者本人的意圖是print()接著前面的代碼繼續,但是python理解的是print()這行代碼是func函數的函數體,這真的是南轅北轍了。如果加了pass語句,那麼就不會出現理解上的差異了,所以,pass語句最重要的作用就是加強代碼的可讀性,避免歧義。跟pass語句有著類似作用的是…(Ellipsis,中文省略號),既然可以使用pass或者…省略代碼,那麼也可以用它們來臨時佔用位子以便後期處理代碼。示例如下:
"""pass/...(Ellipsis)的使用方式
1)臨時佔用位置
2)忽略內容
最好使用pass和...,使用Ellipsis會出現提示但不影響結果
the statistics of this file:
lines(count) understand_level(h/m/l) classes(count) functions(count) fields(count)
000000000032 --l 00000000000000 0000000000000002 ~~~~~~~~~~~~~
"""
import time
__author__ = '與C同行'
# 忽略內容
def func(): pass
def func_o(): ...
# 臨時佔用位置
is_continue = False
if is_continue:
Ellipsis
else:
pass
print(f'當前時間:{time.ctime()}')
print('腳本執行完畢')
從本質上說,在一個腳本中,我們並非只能使用pass或者…來達到我們的要求,其實像None、[]這樣無意義的語句都可以起到和pass語句一樣的作用。