Python編程規(guī)范具體內(nèi)容解析
我們在學(xué)習(xí)Python編程語言之前,首先要了解的就是這一編程語言的一些主要的編碼規(guī)范。我們今天就為大家詳細介紹一下Python編程規(guī)范的相關(guān)內(nèi)容,希望大家可以從中獲得一些幫助,以方便將來的學(xué)習(xí)應(yīng)用。#t#
Python編程規(guī)范之縮進
使用Emacs的Python-mode的默認值:4個空格一個縮進層次。對于確實古老的代碼,你不希望產(chǎn)生混亂,可以繼續(xù)使用8空格的制表符(8-space tabs)。Emacs Python-mode自動發(fā)現(xiàn)文件中主要的縮進層次,依此設(shè)定縮進參數(shù)。
Python編程規(guī)范之制表符還是空格
永遠不要混用制表符和空格。最流行的Python縮進方式是僅使用空格,其次是僅使用制表符,混合著制表符和空格縮進的代碼將被轉(zhuǎn)換成僅使用空格。(在Emacs中,選中整個緩沖區(qū),按ESC-x去除制表符。)調(diào)用Python命令行解釋器時使用-t選項,可對代碼中不合法得混合制表符和空格發(fā)出警告,使用-tt時警告將變成錯誤。這些選項是被高度推薦的。
對于新的項目,強烈推薦僅使用空格而不是制表符。許多編輯器擁有使之易于實現(xiàn)的功能(在Emacs中,確認indent-tabs-mode是nil)。
Python編程規(guī)范之行的最大長度
周圍仍然有許多設(shè)備被限制在每行80字符:而且,窗口限制在80個字符。使將多個窗口并排放置成為可能。在這些設(shè)備上使用默認的折疊方式看起來有點丑陋。因此,請將所有行限制在最大79字符(Emacs準確得將行限制為長80字符),對順序排放的大塊文本(文檔字符串或注釋),推薦將長度限制在72字符。
折疊長行的首選方法是使用Pyhon支持的圓括號,方括號和花括號內(nèi)的行延續(xù)。如果需要,你可以在表達式周圍增加一對額外的圓括號,但是有時使用反斜杠看起來更好,確認恰當(dāng)?shù)每s進了延續(xù)的行。
Emacs的Python-mode正確得完成了這些。一些例子:
- #!Python
- class Rectangle(Blob):
- def __init__(self,width,height,color='black',
emphasis=None,highlight=0):- if width == 0 and height == 0 and \
- color == 'red' and emphasis == 'strong' or \
- highlight > 100:
- raise ValueError, "sorry, you lose"
- if width == 0 and height == 0 and (color == 'red' or
- emphasis is None):
- raise ValueError,"I don't think so"
- Blob.__init__(self,width,height,color,emphasis,highlight)
Python編程規(guī)范之空行
用兩行空行分割頂層函數(shù)和類的定義,類內(nèi)方法的定義用單個空行分割,額外的空行可被用于(保守的)分割相關(guān)函數(shù)組成的群,在一組相關(guān)的單句中間可以省略空行。(例如:一組啞元素)。
當(dāng)空行用于分割方法的定義時,在‘class’行和第一個方法定義之間也要有一個空行。在函數(shù)中使用空行時,請謹慎的用于表示一個邏輯段落。Python接受contol-L(即^L)換頁符作為空格:Emacs(和一些打印工具),視這個字符為頁面分割符,因此在你的文件中,可以用他們來為相關(guān)片段分頁。
Python編程規(guī)范之編碼
Python核心發(fā)布中的代碼必須始終使用ASCII或Latin-1編碼(又名 ISO-8859-1),使用ASCII的文件不必有編碼cookie,Latin-1僅當(dāng)注釋或文檔字符串涉及作者名字需要Latin-1時才被使用:
另外使用\x轉(zhuǎn)義字符是在字符串中包含非ASCII(non-ASCII)數(shù)據(jù)的首選方法。
作為PEP 263實現(xiàn)代碼的測試套件的部分文件是個例外。
Python編程規(guī)范之導(dǎo)入
通常應(yīng)該在單獨的行中導(dǎo)入(Imports),例如:
No:import sys, os
Yes:import sys
import os
但是這樣也是可以的:
from types import StringType, ListType
Imports 通常被放置在文件的頂部,僅在模塊注釋和文檔字符串之后,在模塊的全局變量和常量之前。Imports應(yīng)該有順序地成組安放:
1、標準庫的導(dǎo)入(Imports )
2、相關(guān)的主包(major package)的導(dǎo)入(即,所有的email包在隨后導(dǎo)入)
3、特定應(yīng)用的導(dǎo)入(imports)
你應(yīng)該在每組導(dǎo)入之間放置一個空行,對于內(nèi)部包的導(dǎo)入是不推薦使用相對導(dǎo)入的,對所有導(dǎo)入都要使用包的絕對路徑。
從一個包含類的模塊中導(dǎo)入類時,通??梢詫懗蛇@樣:
from MyClass import MyClass
from foo.bar.YourClass import YourClass
如果這樣寫導(dǎo)致了本地名字沖突,那么就這樣寫
import MyClass
import foo.bar.YourClass
即使用"MyClass.MyClass"和"foo.bar.YourClass.YourClass"
表達式和語句中的空格
Guido不喜歡在以下地方出現(xiàn)空格:
緊挨著圓括號,方括號和花括號的,如:"spam( ham[ 1 ],{ eggs:2 } )"。要始終將它寫成"spam(ham[1],{eggs: 2})"。
緊貼在逗號,分號或冒號前的,如:
"if x == 4:print x,y:x,y = y,x"。要始終將它寫成
"if x == 4:print x,y:x,y = y,x"。
緊貼著函數(shù)調(diào)用的參數(shù)列表前開式括號(open parenthesis )的,如"spam (1)"。要始終將它寫成"spam(1)"。
緊貼在索引或切片,開始的開式括號前的,如:
"dict ['key'] = list [index]"。要始終將它寫成"dict['key'] = list[index]"。
在賦值(或其它)運算符周圍的用于和其它并排的一個以上的空格,如:
- #!Python
- x= 1
- y= 2
- long_variable = 3
要始終將它寫成
- #!Python
- x = 1
- y = 2
- long_variable = 3
以上就是對Python編程規(guī)范的相關(guān)內(nèi)容的介紹。