本文示例程式碼已上傳至我的
Github
倉庫https://github.com/CNFeffery/DataScienceStudyNotes
1 簡介
大家好我是費老師,在日常編寫Python
程式碼的過程中,由於個人經驗及程式設計習慣上的差異,有些人寫出的程式碼可讀性很高,一眼看上去就非常整潔易懂,而有些人寫出的程式碼則十分“潦草隨意”,讀起來頗為費勁。
想要寫出格式工整、可讀性強的Python
程式碼,除了需要在編寫大量程式碼的過程中逐漸養成良好習慣外,還可以結合程式碼格式化工具實現程式碼的自動格式美化,經典的Python
程式碼格式化工具有autopep8
、black
、yapf
等,均可在vscode
、pycharm
等主流ide
中安裝相關外掛進行快捷使用。
而去年大火的程式碼靜態分析工具ruff
,主要功能中也包含了程式碼格式化功能,由於其底層基於rust
編寫,因此執行相關功能時的運算速度超快,據官方稱可達到其他同型別工具的10~100倍之多⚡,今天的文章中,費老師我就將為大家介紹基於ruff
的程式碼格式化常用功能😉。
2 使用ruff進行Python程式碼格式化
2.1 ruff的安裝
在主流的ide
中,我們可以直接安裝ruff
相關外掛,以vscode
為例,在擴充中搜尋ruff
進行安裝即可:
2.2 ruff程式碼格式化常用功能
2.2.1 直接使用
預設條件下,安裝完ruff
外掛後,在vscode
中就可以直接使用快捷鍵shift+alt+f
,針對當前編輯中的py
檔案進行格式美化,舉個例子,假設我們原始的Python
程式碼格式“一不小心”寫成了下面的💩樣子:
import os
# 提取目標路徑下各檔案的建立時間及最近修改時間
target_path ="target_path"
# 需要排除的檔案擴充名
ignore_file_types =['.mp4','.avi', '.rmvb'
]
# 結果元組格式:(檔名,建立時間,最近修改時間)
files=[(file,os.path.getctime(os.path.join(target_path,file)),os.path.getmtime(
os.path.join(target_path,file) )) for file in os.listdir(target_path)
# 判斷當前檔名是否為檔案,且不在排除擴充名列表中
if os.path.isfile(os.path.join(target_path, file)) and
not any(file.endswith(ext) for ext in ignore_file_types
)]
在按下快捷鍵shift+alt+f
後,心情頓時舒暢了~
2.2.2 配置格式化規則
ruff
預設的格式化規則基本上相容black
,但如果你想要自定義調整部分的格式化規則,譬如在引號的使用上,你更傾向於使用單引號,在ruff
中也可以很輕鬆的實現。
ruff
中推薦以具體的專案為控制範圍,透過在專案根目錄中建立pyproject.toml
或ruff.toml
來編寫具體的規則,譬如在下面的示例ruff.toml
檔案中,我們宣告瞭優先使用單引號:
ruff.toml
[format]
# 使用單引號
quote-style = "single"
格式化結果中就會對應的優先使用單引號:
或是限制每行最多字元數量:
ruff.toml
# 限制每行最多20個字元
line-length = 20
[format]
# 使用單引號
quote-style = "single"
設定縮排使用單個Tab
符(預設為4個空格):
ruff.toml
[format]
# 使用單引號
quote-style = "single"
# 縮排使用單個tab
indent-style = "tab"
且ruff
還支援對docstring註釋中的程式碼片段進行識別並格式化:
ruff.toml
[format]
# 使用單引號
quote-style = "single"
# 啟用docstring程式碼片段格式化
docstring-code-format = true
更多有關ruff
程式碼格式化功能的細節,請移步https://docs.astral.sh/ruff/formatter/
瞭解更多。
以上就是本文的全部內容,歡迎在評論區與我們進行討論~