在開始學習Python之前,我們需要了解Python代碼的規范,正所謂“無規矩不成方圓”,一行不合乎編程規矩的代碼,會為你埋下不停報錯的隱患。
提前知曉代碼規范,可以幫助你在后續的學習中邏輯清晰,降低報錯率的同時,還能為你養成良好的編程習慣。
話不多說,直接開講,咱們先上目錄。
編碼
代碼格式
import語句
空格
換行
docstring
編碼
百度對編碼的解釋,是將信息從一種新式或格式轉變為另一種形式的過程,在計算機硬件中,編碼就是利用代碼來表示各組數據資料,使計算機能夠讀懂這行代碼并對信息進行分析和處理。
在Python的編程過程中,需要注意以下兩點:
如無特殊情況, 文件一律使用 UTF-8 編碼
如無特殊情況, 文件頭部必須加入#-*-coding:utf-8-*-標識
代碼格式
縮進
同一使用4個空格進行縮進,就是一個Tab
行寬
每行代碼盡量不要超過80個字符(特殊情況下可超過,但最長不得超過120)
如果代碼過長,可能存在著以下三種問題:
這在查看 side-by-side 的 diff 時很有幫助
方便在控制臺下查看代碼
太長可能是設計有缺陷
引號
編碼過程中,如果需要計算機直接輸出你想要的信息,我們就要用到引號,自然語言用雙引號,機器標示用單引號,代碼中多數使用單引號,舉個例子:
自然語言?使用雙引號?"..."
例如錯誤信息;直接采用這種方式"錯誤信息"
機器標識?使用單引號?'...'?例如 dict 里的 key
正則表達式?使用原生的雙引號?r"..."
文檔字符串 (docstring)?使用三個雙引號?"""......"""
空行
模塊級函數和類定義之間空兩行;
類成員函數之間空一行;
class A:
def __init__(self):
pass
def hello(self):
pass
def main():
pass
可以使用多個空行分隔多組相關的函數
函數中可以使用空行分隔出邏輯相關的代碼
import語句
編寫的正確方式,應該是分行書寫
#正確的寫法
import os
import sys
# 不推薦的寫法
import sys,os
# 正確的寫法
from subprocess import Popen, PIPE
import語句應該放在文件頭部,置于模塊說明及docstring之后,于全局變量之前;
import語句應該按照順序排列,每組之間用一個空行分隔
import os
import sys
import msgpack
import zmq
import foo
導入其他模塊的類定義時,可以使用相對導入
from myclass import MyClass
空格
在二元運算符兩邊各空一格[=,-,+=,==,>,in,is not, and]:
# 正確的寫法
i = i + 1
submitted += 2
y = y * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)
# 不推薦的寫法
i=i+1
submitted +=2
y = y*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)
函數的參數列表中,,之后要有空格
# 正確的寫法
def complex(real, imag):
pass
# 不推薦的寫法
def complex(real,imag):
pass
函數的參數列表中,默認值等號兩邊不要添加空格
# 正確的寫法
def complex(real, imag=0.0):
pass
# 不推薦的寫法
def complex(real, imag = 0.0):
pass
左括號之后,右括號之前不要加多余的空格
# 正確的寫法
spam(ham[1], {eggs: 2})
# 不推薦的寫法
spam( ham[1], { eggs : 2 } )
字典對象的左括號之前不要多余的空格
# 正確的寫法
dict['key'] = list[index]
# 不推薦的寫法
dict ['key'] = list [index]
不要為對齊賦值語句而使用的額外空格
# 正確的寫法
x = 1
y = 2
long_variable = 3
# 不推薦的寫法
x = 1
y = 2
long_variable = 3
換行
if/for/while一定要換行:
# 正確的寫法
if foo == 'blah':
do_blah_thing()
# 不推薦的寫法
if foo == 'blah': do_blash_thing()
禁止復合語句,即一行中包含多個語句:
# 正確的寫法
do_first()
do_second()
do_third()
# 不推薦的寫法
do_first();do_second();do_third();
使用反斜杠\換行,二元運算符+?.等應出現在行末;長字符串也可以用此法換行
session.query(MyTable).\
filter_by(id=1).\
one()
print 'Hello, '\
'%s %s!' %\
('Harry', 'Potter')
docstring
docstring文檔字符串是一個重要的工具,用于解釋文檔程序,幫助你的程序文檔更加易懂。
其最需要注意的規范有兩點:
所有的公共模塊、函數、類、方法,都應該寫 docstring 。私有方法不一定需要,但應該在 def 后提供一個塊注釋來說明。
docstring 的結束"""應該獨占一行,除非此 docstring 只有一行。
打個比方
del function():
?? ?'''say something here!
?? ?'''
?? ?pass
print(function.__doc__) # 調用doc
輸出結果為
say something here!
不難發現,代碼的規范是為了保證Python的簡潔與優雅,養成這種良好的編程習慣,也方便我們日后對自己的代碼進行復查檢修。
以上便是今天分享Python代碼規范中的簡明概述,明天講述的是代碼規范中的注釋,在正式進入我們的Python學習后,我會在每天的文章背后附上一個小練習題,并附上源碼。
當然,還是希望你們先試著做一下,再與源碼進行比對,查漏補缺。
最后,助你學有所成~
原文鏈接:Python代碼規范——簡明概述