python代碼PEP8規范示例


 

"""
文檔字符串 docstring, 是 package, module, class, method, function 級別的注釋,可以通過 doc 成員訪問到,注釋內容在一對雙引號
優先使用英文寫注釋,英文不好全部寫中文,強行使用英文可能導致大家都看不懂
1.所有 import 盡量放在文件開頭,在 docstring 下面,其他變量定義的上面
2.不要使用 from foo import *
3.import 需要分組,每組之間一個空行,每個分組內的順序盡量采用字典序,分組順序是:
    3.1 標准庫
    3.2 第三方庫
    3.3 本項目的 package 和 module
4.不要使用隱式的相對導入(implicit relative imports)
  可以使用顯示的相對導入(explicit relative imports),如 from ..utils import parse
  最好使用全路徑導入(absolute imports)
5.同一個 package/module 下的內容可以寫一起
6.為了避免可能出現的命名沖突,可以使用 as 或導入上一級命名空間

"""
import os
import sys
import db

from flask import Flask, render_template, jsonify
from collections import defaultdict as my_dict

# 這是一個正確注釋,#后面需要一個空格,如下為特例
#!/usr/bin/python

# 操作符兩端加一個空格,如 +, -, *, /, |, &, =
a = 1 + 2
b = 10 - 1
c = 1 * 2
d = 10 / 5
e = 10 | 20
f = 5 & 6


# 在參數列表里的 = 兩端不需要空格
def add(num1=1, num2=2):
    return num1 + num2


# function 和 class 頂上兩個空行
class MyClass(object):
    def my_function1(self):
        pass

    # class 的 method 之間一個空行
    def my_function2(self):
        # 函數內邏輯無關的段落之間空一行,不要過度使用空行
        # 邏輯1

        # 邏輯2

        # 邏輯3

        return


# 不要把多個語句寫在一行,然后用 ; 隔開
add(1, 2)
add(3, 4)

# 括號((), {}, [])內的兩端不需要空格
tmp = ('name1', 'name2')

# if/for/while 語句中,即使執行語句只有一句,也要另起一行
if True:
    print('另起一行')

# 每一行代碼控制在80字符以內,例子如下:
# 面對搶票軟件的花樣,有專家提醒,雖然理論上搶票軟件比人工刷新更快,但12306已經屏蔽了許多搶票端口並推出了“官方搶票”
# 的候補功能——也就是,當沒有余票時,12306會在車次列表中出現“候補”的字樣。旅客可根據需求選擇車次、席別,在成功支付
# 候補預付款后,如果有匹配需求的車票,系統會自動生成已支付訂單,並退回差額;如果沒有,系統將全額退還預付款。那么,這個
# 候補功能和市面上的搶票軟件誰更好用?如果用搶票軟件,又有哪些套路要小心?


# 使用 \ 或 () 控制換行
def foo(tmp1='aa', tmp2='bb', tmp3='cc', tmp4='dd',
        tmp5='ee', tmp6='ff', tmp7='gg', tmp8='hh'):
    pass


# 使用有意義的,英文單詞或詞組,絕對不要使用漢語拼音
address = 'suzhou'

# package/module 名中不要出現 -

# 不要輕易使用 try/except,except 后面需要指定捕捉的異常,裸露的 except
# 會捕捉所有異常,意味着會隱藏潛在的問題
# 可以有多個 except 語句,捕捉多種異常,分別做異常處理
age = '111'
try:
    age = int(age)
except(TypeError, ValueError):
    render_template()

# 使用 finally 子句來處理一些收尾操作
try:
    db.session.commit()
except sqlalchemy.exc.SQLAlchemyError: # 或者更具體的異常
    db.session.rollback()
finally:
    db.session.close()


# 顯示的寫明父類,如果不是繼承自別的類,就繼承自 object 類
# 使用 super 調用父類的方法
# 支持多繼承,即同時有多個父類,建議使用 Mixin
class MyClass(object):
    pass

  

參考文檔:https://zhuanlan.zhihu.com/p/33705005


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM