Python編程規范具體內容解析
我們在學習Python編程語言之前,首先要了解的就是這一編程語言的一些主要的編碼規范。我們今天就為大家詳細介紹一下Python編程規范的相關內容,希望大家可以從中獲得一些幫助,以方便將來的學習應用。#t#
Python編程規范之縮進
使用Emacs的Python-mode的默認值:4個空格一個縮進層次。對于確實古老的代碼,你不希望產生混亂,可以繼續使用8空格的制表符(8-space tabs)。Emacs Python-mode自動發現文件中主要的縮進層次,依此設定縮進參數。
Python編程規范之制表符還是空格
永遠不要混用制表符和空格。最流行的Python縮進方式是僅使用空格,其次是僅使用制表符,混合著制表符和空格縮進的代碼將被轉換成僅使用空格。(在Emacs中,選中整個緩沖區,按ESC-x去除制表符。)調用Python命令行解釋器時使用-t選項,可對代碼中不合法得混合制表符和空格發出警告,使用-tt時警告將變成錯誤。這些選項是被高度推薦的。
對于新的項目,強烈推薦僅使用空格而不是制表符。許多編輯器擁有使之易于實現的功能(在Emacs中,確認indent-tabs-mode是nil)。
Python編程規范之行的最大長度
周圍仍然有許多設備被限制在每行80字符:而且,窗口限制在80個字符。使將多個窗口并排放置成為可能。在這些設備上使用默認的折疊方式看起來有點丑陋。因此,請將所有行限制在最大79字符(Emacs準確得將行限制為長80字符),對順序排放的大塊文本(文檔字符串或注釋),推薦將長度限制在72字符。
折疊長行的首選方法是使用Pyhon支持的圓括號,方括號和花括號內的行延續。如果需要,你可以在表達式周圍增加一對額外的圓括號,但是有時使用反斜杠看起來更好,確認恰當得縮進了延續的行。
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編程規范之空行
用兩行空行分割頂層函數和類的定義,類內方法的定義用單個空行分割,額外的空行可被用于(保守的)分割相關函數組成的群,在一組相關的單句中間可以省略空行。(例如:一組啞元素)。
當空行用于分割方法的定義時,在‘class’行和第一個方法定義之間也要有一個空行。在函數中使用空行時,請謹慎的用于表示一個邏輯段落。Python接受contol-L(即^L)換頁符作為空格:Emacs(和一些打印工具),視這個字符為頁面分割符,因此在你的文件中,可以用他們來為相關片段分頁。
Python編程規范之編碼
Python核心發布中的代碼必須始終使用ASCII或Latin-1編碼(又名 ISO-8859-1),使用ASCII的文件不必有編碼cookie,Latin-1僅當注釋或文檔字符串涉及作者名字需要Latin-1時才被使用:
另外使用\x轉義字符是在字符串中包含非ASCII(non-ASCII)數據的首選方法。
作為PEP 263實現代碼的測試套件的部分文件是個例外。
Python編程規范之導入
通常應該在單獨的行中導入(Imports),例如:
No:import sys, os
Yes:import sys
import os
但是這樣也是可以的:
from types import StringType, ListType
Imports 通常被放置在文件的頂部,僅在模塊注釋和文檔字符串之后,在模塊的全局變量和常量之前。Imports應該有順序地成組安放:
1、標準庫的導入(Imports )
2、相關的主包(major package)的導入(即,所有的email包在隨后導入)
3、特定應用的導入(imports)
你應該在每組導入之間放置一個空行,對于內部包的導入是不推薦使用相對導入的,對所有導入都要使用包的絕對路徑。
從一個包含類的模塊中導入類時,通常可以寫成這樣:
from MyClass import MyClass
from foo.bar.YourClass import YourClass
如果這樣寫導致了本地名字沖突,那么就這樣寫
import MyClass
import foo.bar.YourClass
即使用"MyClass.MyClass"和"foo.bar.YourClass.YourClass"
表達式和語句中的空格
Guido不喜歡在以下地方出現空格:
緊挨著圓括號,方括號和花括號的,如:"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"。
緊貼著函數調用的參數列表前開式括號(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編程規范的相關內容的介紹。