本文示例代碼已上傳至我的
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/
瞭解更多。
以上就是本文的全部內容,歡迎在評論區與我們進行討論~