Python程式碼的風格

閱讀時間約 3 分鐘
在看官網文件時,看到一份文件: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中,要用到「冒號」等,這些讓我一開始挺不習慣的寫法,原來都有這麼些個考量在。
為什麼會看到廣告
13會員
98內容數
寫點東西自娛娛人
留言0
查看全部
發表第一個留言支持創作者!
ysf的沙龍 的其他內容
緣起
閱讀時間約 1 分鐘
文件要看不要背
閱讀時間約 1 分鐘
建立開發環境
閱讀時間約 5 分鐘
你可能也想看
迎新活動「方格新手村」:新格友註冊加入方格子,知名日料吃到飽餐券送給你! 👉 還不是 vocus 的會員嗎?點此註冊,參與新手村活動 👈 近期站上也出現了不少新格友,為了歡迎各位的加入,「方格新手村」隨之登場! 即日起,只要是新註冊帳號於活動期間內發佈 3 則文章,就有機會抽獎獲得知名日料吃到飽餐券。原格友也可以一起同樂,我們準備了小任
Thumbnail
2024-06-21
92
防曬產品係數測試報告彙整(2024年)從2014年起,自己對於市售防曬產品的效能產生了濃厚的興趣。因為當時候發現不少產品的防曬係數其實標示是有問題的,像是原本應該是人體測試的SPF與PA數值,實際上沒有做,只用機器測試的數據來充當,但這兩者卻有很大的差異。像是防曬係數其實有強度、廣度與平均度三個面向需要一起判斷,但多數廠商並沒有完整標示
Thumbnail
2023-04-27
41
不try一下怎麼知道行不行?Python提倡最瀟灑的防禦性程式碼風格 : EAFPEAFP(Easier to Ask for Forgiveness than Permission)是Python提倡的防禦性程式碼風格,鼓勵工程師直接撰寫主要業務邏輯,不需要多做檢查,真的出現異常再處理就好。這種風格的程式碼可讀性優於LBYL風格,並且在多進程/多線程場景下表現更好。
Thumbnail
發佈在
再寫5分鐘
2024-06-12
20
[Python基礎]寫程式碼的風格指南 PEP8 在人與人溝通之間,最怕雞同鴨講,彼此不對頻的狀況常會造成誤會。在程式語言中也會出現類似的情況,所以就有一些約定來彼此約束。 PEP 8 是 Python 社群廣泛遵循的一種風格指南,用於提高 Python 程式碼的可讀性和一致性。一開始是 Python 之父 Guido van Rossum 自己
Thumbnail
2024-01-23
34
【🔒 Python 先修班】🧐 請加入自動化QA(pre-commit)來幫我們檢核程式碼 您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 我們開發程式的時候, 常常會使用Git來管理我們的
Thumbnail
2023-10-31
10
[Python] 使用 PyInstaller 將程式碼轉換成執行檔PyInstaller 是一個強大的工具,可以將 Python 程式碼打包成獨立的可執行檔案,讓你的程式可以在沒有 Python 解釋器的情況下運行。這對於分享和分發你的 Python 應用程式非常有用。以下是使用 PyInstaller 的基本步驟:
Thumbnail
2023-08-15
9
TQC+ 程式語言Python3證照必勝!~第一步開發環境,安裝下載Spyder超簡單,無需輸入程式碼無痛安裝~開始準備練習考照前,請務必下載Spyder~ 為何要下載Spyder? 學校與聯成電腦考照,都是用Spyder。 輸入程式碼,執行看結果。 使用Spyder,按tab鍵,省去打字時間。 將執行成功的程式碼,複製貼上到CodeJudger即時線上評分。 這篇主要是透過Anaconda安裝下載Spy
Thumbnail
2023-07-12
1
Python 的 50+ 練習:資料科學學習手冊我希望透過在好學校開設「Python 的 50+ 練習:資料科學學習手冊」,讓學生一步步完成這門課程所有的觀念講解、範例實作以及練習之後,扎實地將 Python 程式設計與資料科學應用納入自己的技能組,成為一位擅長寫程式處理資料的分析師,大幅提升工作掌握度與職涯發展性!
Thumbnail
2021-12-23
6
python 邊緣與輪廓檢測邊緣與輪廓檢測 edge detection
Thumbnail
2021-09-24
6
PYTHON 運算符號  在計算數字時我們要先搞懂運算符號代表的涵義,Python裡面的符號跟我們認知的不會有太大的差別,但是有一些代表不一樣的意思,就必須搞懂才不會在寫程式時,程式碼的重複性太高,會導致日後的維修性降低。
Thumbnail
2021-09-22
4
PYTHON 格式化輸出常常會遇到好不容易寫好程式,但是輸出的時候沒辦法按照自己想要的格式,或是間隔來輸出,這時需要用到的就是格式化輸出,格式化輸出就是調整排版的一個形式。
Thumbnail
2021-09-20
3
Python 學習的三個理由一天一課的上著網路上的 Python 課程。有朋友問說,為什麼要學 Python ?未來要作工程師嗎? 猶記得當時也是楞了一下,這個問題,有太多個表層與深層的回覆與想法。 充實隔離時光 最簡單的說法,其實就是想充實自己的隔離時間。當時在上海隔離(可以參見這一系列的隔離相關文:https://ma
Thumbnail
2020-12-19
3
迎新活動「方格新手村」:新格友註冊加入方格子,知名日料吃到飽餐券送給你! 👉 還不是 vocus 的會員嗎?點此註冊,參與新手村活動 👈 近期站上也出現了不少新格友,為了歡迎各位的加入,「方格新手村」隨之登場! 即日起,只要是新註冊帳號於活動期間內發佈 3 則文章,就有機會抽獎獲得知名日料吃到飽餐券。原格友也可以一起同樂,我們準備了小任
Thumbnail
2024-06-21
92
防曬產品係數測試報告彙整(2024年)從2014年起,自己對於市售防曬產品的效能產生了濃厚的興趣。因為當時候發現不少產品的防曬係數其實標示是有問題的,像是原本應該是人體測試的SPF與PA數值,實際上沒有做,只用機器測試的數據來充當,但這兩者卻有很大的差異。像是防曬係數其實有強度、廣度與平均度三個面向需要一起判斷,但多數廠商並沒有完整標示
Thumbnail
2023-04-27
41
不try一下怎麼知道行不行?Python提倡最瀟灑的防禦性程式碼風格 : EAFPEAFP(Easier to Ask for Forgiveness than Permission)是Python提倡的防禦性程式碼風格,鼓勵工程師直接撰寫主要業務邏輯,不需要多做檢查,真的出現異常再處理就好。這種風格的程式碼可讀性優於LBYL風格,並且在多進程/多線程場景下表現更好。
Thumbnail
發佈在
再寫5分鐘
2024-06-12
20
[Python基礎]寫程式碼的風格指南 PEP8 在人與人溝通之間,最怕雞同鴨講,彼此不對頻的狀況常會造成誤會。在程式語言中也會出現類似的情況,所以就有一些約定來彼此約束。 PEP 8 是 Python 社群廣泛遵循的一種風格指南,用於提高 Python 程式碼的可讀性和一致性。一開始是 Python 之父 Guido van Rossum 自己
Thumbnail
2024-01-23
34
【🔒 Python 先修班】🧐 請加入自動化QA(pre-commit)來幫我們檢核程式碼 您是否苦於網路資訊爆炸嗎? 教學何其多,但卻無法好好選擇的困境呢? 歡迎加入「🔒 阿Han的軟體心法實戰營」, 這裡不給您冗餘的雜訊, 單刀直入直接送您重點, 避開選擇障礙的困境, 讓您獲得業界標準的開發起手式, 成為Top 1的頂尖人才。 我們開發程式的時候, 常常會使用Git來管理我們的
Thumbnail
2023-10-31
10
[Python] 使用 PyInstaller 將程式碼轉換成執行檔PyInstaller 是一個強大的工具,可以將 Python 程式碼打包成獨立的可執行檔案,讓你的程式可以在沒有 Python 解釋器的情況下運行。這對於分享和分發你的 Python 應用程式非常有用。以下是使用 PyInstaller 的基本步驟:
Thumbnail
2023-08-15
9
TQC+ 程式語言Python3證照必勝!~第一步開發環境,安裝下載Spyder超簡單,無需輸入程式碼無痛安裝~開始準備練習考照前,請務必下載Spyder~ 為何要下載Spyder? 學校與聯成電腦考照,都是用Spyder。 輸入程式碼,執行看結果。 使用Spyder,按tab鍵,省去打字時間。 將執行成功的程式碼,複製貼上到CodeJudger即時線上評分。 這篇主要是透過Anaconda安裝下載Spy
Thumbnail
2023-07-12
1
Python 的 50+ 練習:資料科學學習手冊我希望透過在好學校開設「Python 的 50+ 練習:資料科學學習手冊」,讓學生一步步完成這門課程所有的觀念講解、範例實作以及練習之後,扎實地將 Python 程式設計與資料科學應用納入自己的技能組,成為一位擅長寫程式處理資料的分析師,大幅提升工作掌握度與職涯發展性!
Thumbnail
2021-12-23
6
python 邊緣與輪廓檢測邊緣與輪廓檢測 edge detection
Thumbnail
2021-09-24
6
PYTHON 運算符號  在計算數字時我們要先搞懂運算符號代表的涵義,Python裡面的符號跟我們認知的不會有太大的差別,但是有一些代表不一樣的意思,就必須搞懂才不會在寫程式時,程式碼的重複性太高,會導致日後的維修性降低。
Thumbnail
2021-09-22
4
PYTHON 格式化輸出常常會遇到好不容易寫好程式,但是輸出的時候沒辦法按照自己想要的格式,或是間隔來輸出,這時需要用到的就是格式化輸出,格式化輸出就是調整排版的一個形式。
Thumbnail
2021-09-20
3
Python 學習的三個理由一天一課的上著網路上的 Python 課程。有朋友問說,為什麼要學 Python ?未來要作工程師嗎? 猶記得當時也是楞了一下,這個問題,有太多個表層與深層的回覆與想法。 充實隔離時光 最簡單的說法,其實就是想充實自己的隔離時間。當時在上海隔離(可以參見這一系列的隔離相關文:https://ma
Thumbnail
2020-12-19
3