PEP8 是什麼呢,簡單說就是一種編碼規範,是爲了讓程式碼「更好看」,更容易被閱讀。 具體有這些規範,參考 PEP 8 –Style Guide for Python Code.當然也可以使用Pycharm檢查或使用pylint.下面 下麪是規範總結
def foo(first, second, third, fourth, fifth,
sixth, and_some_other_very_long_param):
user = User.objects.filter_by(first=first, second=second, third=third) \
.skip(100).limit(100) \
.all()
text = ('Long strings can be made up '
'of several shorter strings.')
總體原則,新編程式碼必須按下面 下麪命名風格進行,現有庫的編碼儘量保持風格。
1 儘量單獨使用小寫字母‘l’,大寫字母‘O’等容易混淆的字母。
2 模組命名儘量短小,使用全部小寫的方式,可以使用下劃線。
3 包命名儘量短小,使用全部小寫的方式,不可以使用下劃線。
4 類的命名使用CapWords的方式,模組內部使用的類採用_CapWords的方式。
5 異常命名使用CapWords+Error後綴的方式。
6 全域性變數儘量只在模組內有效,類似C語言中的static。實現方法有兩種,一是__all__機制 機製;二是字首一個下劃線。
7 函數命名使用全部小寫的方式,可以使用下劃線。
8 常數命名使用全部大寫的方式,可以使用下劃線。
9 類的屬性(方法和變數)命名使用全部小寫的方式,可以使用下劃線。
9 類的屬性有3種作用域public、non-public和subclass API,可以理解成C++中的public、private、protected,non-public屬性前,字首一條下劃線。
11 類的屬性若與關鍵字名字衝突,後綴一下劃線,儘量不要使用縮略等其他方式。
12 爲避免與子類屬性命名衝突,在類的一些屬性前,字首兩條下劃線。比如:類Foo中宣告__a,存取時,只能通過Foo._Foo__a,避免歧義。如果子類也叫Foo,那就無能爲力了。
13 類的方法第一個參數必須是self,而靜態方法第一個參數必須是cls。
不要使用隱式的相對匯入(implicit relative imports),可是使用顯示的相對匯入(explicit relative imports),如 from …utils import parse,最好使用全路徑匯入(absolute imports) 對於不同的 package,一個 import 單獨一行,同一個 package/module 下的內容可以寫一起:
# bad
import sys, os, time
# good
import os
import sys
import time
# ok
from flask import Flask, render_template, jsonify
# bad 無謂的註釋
x = x + 1 # increase x by 1
# bad 錯誤的註釋
x = x - 1 # increase x by 1
# bad
try:
user = User()
user.name = "leon"
user.age = int(age) # 可能拋出異常
user.created_at = datetime.datetime.utcnow()
db.session.add(user)
db.session.commit() # 可能拋出異常
except:
db.session.rollback()
# better
try:
age = int(age)
except (TypeError, ValueError):
return # 或別的操作
user = User()
user.name = "leon"
user.age = age
user.created_at = datetime.datetime.utcnow()
db.session.add(user)
try:
db.session.commit()
except sqlalchemy.exc.SQLAlchemyError: # 或者更具體的異常
db.session.rollback()
finally:
db.session.close()
# bad
if d.has_key(k):
do_something()
# good
if k in d:
do_something()
詳細可以參考 Google 開源專案風格指南 ,Python風格規範
https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/
參考文章:
https://my.oschina.net/u/2474096/blog/2248957?from=groupmessage&isappinstalled=0
https://www.cnblogs.com/jiangchunsheng/p/10846052.html