Python程式碼的風格

更新 發佈閱讀 4 分鐘

在看官網文件時,看到一份文件:PEP 8 -- Style Guide for Python Code。這份文件是關於Python程式碼風格的指引和建議。

一直以來,在寫程式時總有個小小的困擾,雖不影響程式的正確性和執行結果,但總覺得彆扭。什麼困擾呢?就是程式碼風格的問題。程式碼風格指的是什麼?也沒什麼特別的,就是排版啦、變數名稱的寫法啦、要用大寫還是小寫啦等等。有時候覺得這樣寫不錯,可是過陣子又覺得那樣不好,應該改一改,就光是縮排要三格還是四格這麼簡單的一件事,都可以來來回回變了好幾回。現在既然官網上有這文件,那就照裡頭的指引和建議寫,不用再傷腦筋了。

很快地把文件看過一遍。老樣子!看了後面忘了前面。

在看的過程中,注意到文件裡頭提到,每行最多不要超過79個字元,而註解和docstrings,不要超過72個字元。所以囉,那乾脆就每行都不要超過72個字元得了。看到這規範時,不由得就想起FORTRAN這個古老的程式語言。

那時大一,還是在用5.25”磁碟片的個人電腦上古時代,學的就是FORTRAN。那時的FORTRAN規定,程式碼要寫在第7~72格之間,前面幾格,就留給註解符號「C」和行號用。為什麼會有這規定?據說是因為FORTRAN誕生時,還沒有鍵盤這玩意兒,要靠卡片輸入。那個卡片長得就像考試時要用2B鉛筆劃來劃去的卡片,能寫的範圍就那麼大,所以才會限制程式碼只能寫在固定範圍內。現在連FORTRAN都沒這限制了,Python幹嘛要計較這個?而且現在的螢幕大得很,還越來越大,長長的程式碼,應該不會造成什麼困擾啊!不過根據文件的說明,之所以有這規範,就是在讀程式時,可以開兩個視窗,然後新、舊程式並列在一起,便於工作。另外一個原因,是避免編輯器自動換行所造成的版面混亂,畢竟有些編輯器有自動換行功能,有些沒有,這會造成一些困擾。看來挺有道理的,不是嗎?不過讀到變數名稱的寫法規範時,我就覺得有點不太認同了。

變數名稱的寫法有很多種,如果要節省空間,那camel case應該是比較好的選擇。可是Python卻選了lower_case_with_underscores這種寫法。既然希望每行不要超過72個字元,怎麼不用camel case?用底線的寫法,不是比較會因為超過72個字元而需要切斷換行嗎?實在是不知道用意何在!不過既然文件這麼定,那就這麼寫吧!

其他的還有例如空格、逗號、冒號、刮號等等的用法,其實都跟英文標點符號的排版方式差不多。例如,英文的標點符號是直接接在單字後面,中間沒有空格,後面空一格:We need five animals: two dos, two cats and a horse. 在Python中也是這麼寫,例如:for i in range(2,5):。比較特別的是冒號,可以當標點符號,也可以是operator。如果是operator那就要遵照operator的寫法,例如,要寫成a[3:5],而不是a[3: 5],冒號後面不要有空格。

這林林總總的風格規範,目的其實很單純:提高程式碼的可讀性,以及不同作者程式碼風格的一致性,就如同大家講共同的語言,溝通會比較順暢一樣。Python很看重程式碼的可讀性,在The Zen of Python裡頭就有Readability counts. 這麼一條,也基於這樣的理念,連在程式語法的設計上,都有跟別人不一樣的設計。例如,在Design and History FAQ這份文件中就提到,用縮排來區分程式區塊、在if/while/def/class等statement中,要用到「冒號」等,這些讓我一開始挺不習慣的寫法,原來都有這麼些個考量在。

留言
avatar-img
留言分享你的想法!
avatar-img
ysf的沙龍
19會員
157內容數
寫點東西自娛娛人
ysf的沙龍的其他內容
2025/04/14
花了些時間,靜下心來,仔仔細細地研究了一番,總算把Python呼叫函數時引數的傳遞方式給徹底搞清楚了。
2025/04/14
花了些時間,靜下心來,仔仔細細地研究了一番,總算把Python呼叫函數時引數的傳遞方式給徹底搞清楚了。
2024/05/08
呼!折騰了好久,終於徹底搞清楚pygame的各個blend mode所用的計算式,到底是長啥樣子了。
2024/05/08
呼!折騰了好久,終於徹底搞清楚pygame的各個blend mode所用的計算式,到底是長啥樣子了。
2023/12/20
在寫《The Nature of Code閱讀心得筆記——使用Python實作》的[第四章]4.3節時,原書提到,在使用Java的ArrayList時,如果用迴圈一面走訪一面又移除其中的元素,那會有難以察覺的問題存在。寫個小程式測試的結果發現,Python的list也會有一樣的問題。
Thumbnail
2023/12/20
在寫《The Nature of Code閱讀心得筆記——使用Python實作》的[第四章]4.3節時,原書提到,在使用Java的ArrayList時,如果用迴圈一面走訪一面又移除其中的元素,那會有難以察覺的問題存在。寫個小程式測試的結果發現,Python的list也會有一樣的問題。
Thumbnail
看更多
你可能也想看
Thumbnail
在人與人溝通之間,最怕雞同鴨講,彼此不對頻的狀況常會造成誤會。在程式語言中也會出現類似的情況,所以就有一些約定來彼此約束。 PEP 8 是 Python 社群廣泛遵循的一種風格指南,用於提高 Python 程式碼的可讀性和一致性。一開始是 Python 之父 Guido van Rossum 自己
Thumbnail
在人與人溝通之間,最怕雞同鴨講,彼此不對頻的狀況常會造成誤會。在程式語言中也會出現類似的情況,所以就有一些約定來彼此約束。 PEP 8 是 Python 社群廣泛遵循的一種風格指南,用於提高 Python 程式碼的可讀性和一致性。一開始是 Python 之父 Guido van Rossum 自己
Thumbnail
軟體開發的時候, 我們通常會與一個團隊一起奮鬥, 那團隊之間勢必需要培養一個良好的默契, 以及相近的風格, 這樣共事起來才會更加的有效率, 而Coding Style就是讓團隊具有一個參考的標準, 但風格百百種, 我們究竟應該怎麼選擇呢? 這個篇章我們會建議及幫助您選擇一個良好的Coding St
Thumbnail
軟體開發的時候, 我們通常會與一個團隊一起奮鬥, 那團隊之間勢必需要培養一個良好的默契, 以及相近的風格, 這樣共事起來才會更加的有效率, 而Coding Style就是讓團隊具有一個參考的標準, 但風格百百種, 我們究竟應該怎麼選擇呢? 這個篇章我們會建議及幫助您選擇一個良好的Coding St
Thumbnail
本文靈感來自:How to Document Your Code Like a Pro 以下範例程式均為 Python 推薦插件:better comment 前言 程式碼的有效文件化是編程最重要的部分之一 Python 提升可讀性有以下方式: 註釋 類型提示 文檔字串 這些實踐可以提高程式碼的可讀
Thumbnail
本文靈感來自:How to Document Your Code Like a Pro 以下範例程式均為 Python 推薦插件:better comment 前言 程式碼的有效文件化是編程最重要的部分之一 Python 提升可讀性有以下方式: 註釋 類型提示 文檔字串 這些實踐可以提高程式碼的可讀
Thumbnail
Python 基本語法 python 語法的後綴名是以.py 結尾 python 執行方式 使用交互介面執行 使用 python test.py 命令執行 使用./test.py 執行 python 標示符 以單下劃線開頭的屬性,表示是類的私有屬性(包括方法,變量)。如:_foo表示不能直接訪問的類
Thumbnail
Python 基本語法 python 語法的後綴名是以.py 結尾 python 執行方式 使用交互介面執行 使用 python test.py 命令執行 使用./test.py 執行 python 標示符 以單下劃線開頭的屬性,表示是類的私有屬性(包括方法,變量)。如:_foo表示不能直接訪問的類
Thumbnail
在看官網文件時,看到一份文件:PEP 8 -- Style Guide for Python Code。這份文件是關於Python程式碼風格的指引和建議。
Thumbnail
在看官網文件時,看到一份文件:PEP 8 -- Style Guide for Python Code。這份文件是關於Python程式碼風格的指引和建議。
Thumbnail
隨著程式的功能愈來愈複雜,程式碼也愈來愈多,若程式從頭寫到尾沒有任何的段落,可讀性會愈來愈差,甚至會發現同樣的一段程式碼重覆很多遍,因為類似的功能區塊在程式中可能會一再出現。這樣的程式碼不利於多人的協作開發,即使是寫作者本身在一段時間後回來看,可能也難以一眼就掌握程式的主要架構。
Thumbnail
隨著程式的功能愈來愈複雜,程式碼也愈來愈多,若程式從頭寫到尾沒有任何的段落,可讀性會愈來愈差,甚至會發現同樣的一段程式碼重覆很多遍,因為類似的功能區塊在程式中可能會一再出現。這樣的程式碼不利於多人的協作開發,即使是寫作者本身在一段時間後回來看,可能也難以一眼就掌握程式的主要架構。
Thumbnail
不間斷 Python 挑戰 Day 2 - 註解、變數與資料型態
Thumbnail
不間斷 Python 挑戰 Day 2 - 註解、變數與資料型態
Thumbnail
常常會遇到好不容易寫好程式,但是輸出的時候沒辦法按照自己想要的格式,或是間隔來輸出,這時需要用到的就是格式化輸出,格式化輸出就是調整排版的一個形式。
Thumbnail
常常會遇到好不容易寫好程式,但是輸出的時候沒辦法按照自己想要的格式,或是間隔來輸出,這時需要用到的就是格式化輸出,格式化輸出就是調整排版的一個形式。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News