目錄
- Python 社群
- Pythonic
- PEP8
Python 社群
JavaScript 和 Python 在 GitHub 使用量為第一名和第三名(第二名是 Java),每天都有成千上萬行的程式碼被 push 到 GitHub 上,它們擁有強大的社群,稱得上「年輕有活力」的程式語言
那麼,社群能幫你什麼?如果你遇到一個演算法難題、一個 Web 開發的 bug,或是想學新語言、新框架,甚至是找些開放資料集和預訓練好的模型
你都可以在社群中找到提示、工具甚至是答案
(通常還會搭配 stackoverflow,新手的好夥伴 :D )
Credit: isogramconsulting.com
Pythonic 是啥
程式語言的慣用法(idioms)是由使用者定義的,同樣的問題,十種人可能有十種寫法,如果沒有一個慣用、流行的寫法,會造成溝通的效率低下、code review 很差,很可能會發生「明明都是某語言,我怎麼看不懂你寫的程式碼」這種窘境
Python 一開始設計時,為此寫一首叫做「The Zen of Python」的詩
import this
# ----------
# The Zen of Python, by Tim Peters
# Beautiful is better than ugly.
# Explicit is better than implicit.
# Simple is better than complex.
# Complex is better than complicated.
# Flat is better than nested.
# ......
漂亮、簡單、可讀性...等,都是 Python 語言的追求,因此產生了 Pythonic 這個形容詞,簡單來說就是符合上述追求的「Python 的標準化寫法(非必要)」
儘管如此,你也不一定要遵守,這只是一個主流的、通用的 coding style,幫助在社群交流中有一個參考的標準,也是一個「好的、漂亮的」Python 程式的條件之一
遵守 Pythonic 好處很多,無論作者只有你還是有其他協作者
更是判斷你是不是 Python 的中高階使用者的關鍵之一
PEP 8
PEP 全名為「Python Enhancement Proposal」,中文翻作「Python 增進建議書」,就是官方對所謂 Pythonic 提出的一個建議書
通常在社群中會遵守,也會要求任何加入的協作者一起遵守,
社群正在討論如何套用 PEP8 / Credit: GitHub
So, what is PEP8?
PEP 8 規範了一些基礎的語法的建議,包含命名、函式宣告、判斷式的建議,例如
- 用四個空取代 tab 來縮排
- functions 之間用兩個空行來隔開
- 變數命名使用 snake_case,Model 命名用 CamelCase
max_amount_of_users = 10
def get_user_by_name(): # snake_case
pass
class CustomerRecord: # CamelCase
pass
- import 一定要放在檔案的最上面
- 盡量使用絕對名稱來匯入,而不是使用相對目前模組路徑的方法
# e.g.
# 要從 bar (package)匯入 foo (model or function)
import foo # 不好
from bar import foo # 比較好
from . import foo # 如果一定要用相對路徑,用這個
...還有很多有用的建議,你也可以參考 autopep8、pylint 這兩個套件,能夠提醒、幫你修改不合格式的地方
**建議把 PEP 8 認真的看一遍,對還不熟練 coding 的朋友蠻有幫助的 :D **
系列目錄
- 高效率 Python (1) - 緒論之 Pythonic 與 PEP8
- 高效率 Python (2) - 迴圈、迭代
- 高效率 Python (3) - 函式、產生器
- ...