Python基礎教程——代碼規范

在開始學習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代碼規范——簡明概述

歡迎你關注我的公主號《Python小白集訓營》,每日更新零基礎小白入門Python的教程和實操,回復關鍵詞還能獲得Python學習大禮包哦~

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容