Python代码规范之简明概述
生活随笔
收集整理的這篇文章主要介紹了
Python代码规范之简明概述
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1、編碼
- 如無(wú)特殊情況, 文件一律使用 UTF-8 編碼
- 如無(wú)特殊情況, 文件頭部必須加入#-*-coding:utf-8-*-標(biāo)識(shí)
2、代碼格式
2.1、縮進(jìn)
- 統(tǒng)一使用 4 個(gè)空格進(jìn)行縮進(jìn)
2.2、行寬
每行代碼盡量不超過(guò) 80 個(gè)字符(在特殊情況下可以略微超過(guò) 80 ,但最長(zhǎng)不得超過(guò) 120)
理由:
- 這在查看 side-by-side 的 diff 時(shí)很有幫助
- 方便在控制臺(tái)下查看代碼
- 太長(zhǎng)可能是設(shè)計(jì)有缺陷
2.3、引號(hào)
簡(jiǎn)單說(shuō),自然語(yǔ)言使用雙引號(hào),機(jī)器標(biāo)示使用單引號(hào),因此 代碼里 多數(shù)應(yīng)該使用 單引號(hào)
- 自然語(yǔ)言 使用雙引號(hào) "..."
例如錯(cuò)誤信息;很多情況還是 unicode,使用u"你好世界" - 機(jī)器標(biāo)識(shí) 使用單引號(hào) '...' 例如 dict 里的 key
- 正則表達(dá)式 使用原生的雙引號(hào) r"..."
- 文檔字符串 (docstring) 使用三個(gè)雙引號(hào) """......"""
2.4、空行
- 模塊級(jí)函數(shù)和類定義之間空兩行;
- 類成員函數(shù)之間空一行;
- 可以使用多個(gè)空行分隔多組相關(guān)的函數(shù)
- 函數(shù)中可以使用空行分隔出邏輯相關(guān)的代碼
2.5、編碼
- 文件使用 UTF-8 編碼
- 文件頭部加入#-*-conding:utf-8-*-標(biāo)識(shí)
3、import 語(yǔ)句
- import 語(yǔ)句應(yīng)該分行書寫
- import語(yǔ)句應(yīng)該使用 absolute import
- import語(yǔ)句應(yīng)該放在文件頭部,置于模塊說(shuō)明及docstring之后,于全局變量之前;
- import語(yǔ)句應(yīng)該按照順序排列,每組之間用一個(gè)空行分隔
- 導(dǎo)入其他模塊的類定義時(shí),可以使用相對(duì)導(dǎo)入
- 如果發(fā)生命名沖突,則可使用命名空間
4、空格
- 在二元運(yùn)算符兩邊各空一格[=,-,+=,==,>,in,is not, and]:
- 函數(shù)的參數(shù)列表中,,之后要有空格
- 函數(shù)的參數(shù)列表中,默認(rèn)值等號(hào)兩邊不要添加空格
- 左括號(hào)之后,右括號(hào)之前不要加多余的空格
- 字典對(duì)象的左括號(hào)之前不要多余的空格
- 不要為對(duì)齊賦值語(yǔ)句而使用的額外空格
5、換行
Python 支持括號(hào)內(nèi)的換行。這時(shí)有兩種情況。
使用反斜杠\換行,二元運(yùn)算符+ .等應(yīng)出現(xiàn)在行末;長(zhǎng)字符串也可以用此法換行
''' 遇到問(wèn)題沒(méi)人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' session.query(MyTable).\filter_by(id=1).\one()print 'Hello, '\'%s %s!' %\('Harry', 'Potter')禁止復(fù)合語(yǔ)句,即一行中包含多個(gè)語(yǔ)句:
# 正確的寫法 do_first() do_second() do_third()# 不推薦的寫法 do_first();do_second();do_third();if/for/while一定要換行:
# 正確的寫法 if foo == 'blah':do_blah_thing()# 不推薦的寫法 if foo == 'blah': do_blash_thing()6、docstring
docstring 的規(guī)范中最其本的兩點(diǎn):
總結(jié)
以上是生活随笔為你收集整理的Python代码规范之简明概述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 为什么Python类语法应该不同?
- 下一篇: Python切片中的误区与高级用法