目錄
1、對人:作為空間佔位符
2、對機器:為了語法完整性
首頁 後端開發 Python教學 知道Python 為什麼要有 pass 語句?

知道Python 為什麼要有 pass 語句?

Oct 30, 2020 pm 04:54 PM
pass python

Python影片教學欄位介紹Python為什麼要有pass語句。

知道Python 為什麼要有 pass 語句?

關於Python 中的pass語句,它似乎很簡單(只有4 個字母),即使是沒有任何程式設計經驗的初學者也能很快地掌握它的用法。

官方文件的介紹十分簡單,以下的三個例子可以讓我們快速地了解如何使用它:

知道Python 為什麼要有 pass 語句?

簡單而言,pass 是一種空操作(null operation),解釋器執行到它的時候,除了檢查語法是否合法,什麼也不做就直接跳過。

它跟 return、break、continue 和 yield 之類的非空運算相比,最大的差異在於它不會改變程式的執行順序。它就像我們寫的註釋,除了佔用一行程式碼行,不會對所處的作用域產生任何影響。

但是,如果你有其它語言的基礎,你也許會好奇:為什麼 Python 有這麼獨特的 pass 語句,而別的語言卻沒有?

Python 這麼設計,到底是出於什麼原因呢?

是為了解決大部分程式語言都要面對的共通性問題,還是因為它有自己的新發現,所以創造出來一個新的功能?

換句話說:Python 為什麼要有 pass 語句,它能解決什麼問題(好處),如果沒有它,會導致什麼問題(壞處)?

接下來,本文將從兩個維度展開分析。

1、對人:作為空間佔位符

我把它看作是一種言簡意賅的註釋方式,等於是說「這裡先預留位置,回頭再補上具體的程式碼實作」。

例如在多層的 if-elif-else 結構中,我們可以先把判斷條件寫好,然後在對應的區塊中寫上 pass,以後再慢慢完善。

例如上文所給的例子,我們可以先寫好類別/函數名稱及其入參,然後跳過(pass)主體程式碼,以後再慢慢填入。

pass 寫起來簡單,而且由於是關鍵字,IDE 會給出顯眼的顏色區分,所以就比我們寫上註釋內容來得方便些。

pass 作為空間佔位符,主要可以方便我們構思局部的程式碼結構,有一定的輔助提醒作用。

但是,若作為一種註釋方式,它就顯得太單薄了,比不上寫“# todo: xxxx”,後者也會被 IDE 用顏色突顯,而且意思更明確。雖然寫起來簡單,但它也引入了一個看似多餘的關鍵字 pass。

所以,從空間佔位符的角度來看,pass 不是程式語言中必須的設計要素。

有了它,我們可以表達出「這裡有東西,但暫時跳過」的語義,但如果沒有它,則可以用註釋內容來替代。

2、對機器:為了語法完整性

對於前一條的用法,pass 出現在程式碼中的位置在理論上是不受限的。

但是,我們最常使用 pass 時,基本上就是在冒號的下一行,而且在該層縮排的程式碼區塊中,只有這一語句。 (參見前文的 3 個例子,為了方便,我們僅以以空函數為例)

我們可以設想下,如果不寫它,會怎麼樣?

答案是會報縮排錯誤:IndentationError: expected an indented block

# 将函数体的 pass 去除,会报错def func():func()复制代码
登入後複製

因為Python 使用縮排來分割程式碼區塊(至於原因,請查閱《Python為什麼使用縮排來劃分程式碼區塊?》),而冒號標識著要出現新的縮排程式碼區塊,所以這個例子會報缺少縮排程式碼區塊。

如果我們用前文說的註解來取代,看看會怎麼樣?

# 将函数体的 pass 换成注释def func():
    # todo:此处有东西,以后补上func()复制代码
登入後複製

這樣寫,也會報錯:IndentationError: expected an indented block

原因是註解並非有效的語法內容,它會被Python 解釋器忽略掉( ignore),不像pass 語句那樣是「有效的語法內容,但是跳過」。

也就是說,縮排程式碼區塊中必須包含有語法意義的內容,而下面的例子都是有效的:

def func():
    """这是一个字符串"""def func2():
    123456复制代码
登入後複製

Python 在定義函數時,必須包含函數體,即同時包含宣告加定義兩種語義,不能像某些語言可以只使用宣告的語義,即寫成void test();

但是,由於 Python 不使用花括號,它無法像某些語言那樣直接定義出空函數,也就是寫成void test(){}

綜合以上的分析,Python 在定義空函數時,必須要有合法的函數體,因此設計出表示空運算的 pass 語句。它是為了補充語法的完整性,連同冒號,等效於其它語言中一對空的花括號。

從語法完整性的維度來看,它是必須的設計要素,如果沒有的話,也必須用類似的空語句或特殊符號來取代。

對人方面,pass 可以表示「暫時跳過」的含義,作為臨時的佔位符,最終會被實際的代碼實現所替換;對機器方面,它則可以表示「直接跳過”,只為了補齊語法邏輯,並不會被其它代碼所替換。

其它語言沒有專門的一種語句或符號來表示這種佔位符(即語意有所欠缺),但是它們也不需要費心思專門設計一個關鍵字來補齊語法完整性(即文法完備)。

回到本文開頭的問題:Python 為什麼要有 pass 語句,它能解決什麼問題(好處),如果沒有它,會導致什麼問題(壞處)?

Python 使用pass 語句,是為了支援純粹空操作的程式碼區塊(空函數、空類別、空的循環控制區塊等等),有了它,還能額外表達出一種佔位符的語意。

前者是對機器而言的,必須要有,等效於其它語言中空花括號的作用;後者是對人而言的,非必須的,可以用註釋來表達,但因為Python 設計了這個語句,這種用法有時候還蠻方便的。

相關免費學習推薦:python影片教學

以上是知道Python 為什麼要有 pass 語句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP和Python:解釋了不同的範例 PHP和Python:解釋了不同的範例 Apr 18, 2025 am 12:26 AM

PHP主要是過程式編程,但也支持面向對象編程(OOP);Python支持多種範式,包括OOP、函數式和過程式編程。 PHP適合web開發,Python適用於多種應用,如數據分析和機器學習。

在PHP和Python之間進行選擇:指南 在PHP和Python之間進行選擇:指南 Apr 18, 2025 am 12:24 AM

PHP適合網頁開發和快速原型開發,Python適用於數據科學和機器學習。 1.PHP用於動態網頁開發,語法簡單,適合快速開發。 2.Python語法簡潔,適用於多領域,庫生態系統強大。

Python vs. JavaScript:學習曲線和易用性 Python vs. JavaScript:學習曲線和易用性 Apr 16, 2025 am 12:12 AM

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

PHP和Python:深入了解他們的歷史 PHP和Python:深入了解他們的歷史 Apr 18, 2025 am 12:25 AM

PHP起源於1994年,由RasmusLerdorf開發,最初用於跟踪網站訪問者,逐漸演變為服務器端腳本語言,廣泛應用於網頁開發。 Python由GuidovanRossum於1980年代末開發,1991年首次發布,強調代碼可讀性和簡潔性,適用於科學計算、數據分析等領域。

vs code 可以在 Windows 8 中運行嗎 vs code 可以在 Windows 8 中運行嗎 Apr 15, 2025 pm 07:24 PM

VS Code可以在Windows 8上運行,但體驗可能不佳。首先確保系統已更新到最新補丁,然後下載與系統架構匹配的VS Code安裝包,按照提示安裝。安裝後,注意某些擴展程序可能與Windows 8不兼容,需要尋找替代擴展或在虛擬機中使用更新的Windows系統。安裝必要的擴展,檢查是否正常工作。儘管VS Code在Windows 8上可行,但建議升級到更新的Windows系統以獲得更好的開發體驗和安全保障。

visual studio code 可以用於 python 嗎 visual studio code 可以用於 python 嗎 Apr 15, 2025 pm 08:18 PM

VS Code 可用於編寫 Python,並提供許多功能,使其成為開發 Python 應用程序的理想工具。它允許用戶:安裝 Python 擴展,以獲得代碼補全、語法高亮和調試等功能。使用調試器逐步跟踪代碼,查找和修復錯誤。集成 Git,進行版本控制。使用代碼格式化工具,保持代碼一致性。使用 Linting 工具,提前發現潛在問題。

notepad 怎麼運行python notepad 怎麼運行python Apr 16, 2025 pm 07:33 PM

在 Notepad 中運行 Python 代碼需要安裝 Python 可執行文件和 NppExec 插件。安裝 Python 並為其添加 PATH 後,在 NppExec 插件中配置命令為“python”、參數為“{CURRENT_DIRECTORY}{FILE_NAME}”,即可在 Notepad 中通過快捷鍵“F6”運行 Python 代碼。

vscode 擴展是否是惡意的 vscode 擴展是否是惡意的 Apr 15, 2025 pm 07:57 PM

VS Code 擴展存在惡意風險,例如隱藏惡意代碼、利用漏洞、偽裝成合法擴展。識別惡意擴展的方法包括:檢查發布者、閱讀評論、檢查代碼、謹慎安裝。安全措施還包括:安全意識、良好習慣、定期更新和殺毒軟件。

See all articles