#!/usr/bin/python
應用程式要定義main函式而不要直接寫指令碼
def main():
dosomething()
if __name__ == "__main__":
main()
如果是全域性變數,則需要顯式加上"global"。
python 的注釋分為兩種的概念,一種是由 # 開頭的"真正的"注釋,另一種是 docstrings。前者表明為何選擇當前實現以及這種實現的原理和難點,後者表明如何使用這個包、模組、類、函式(方法),甚至包括使用示例和單元測試。
堅持適當注釋原則。對不存在技術難點的**堅持不注釋,對存在技術難點的**必須注釋。但與注釋不同,推薦對每乙個包、模組、類、函式(方法)寫 docstrings,除非**一目了然,非常簡單。
注釋塊通常應用於跟隨著一些(或者全部)**並和這些**有著相同的縮排層次。注釋塊中每行以'#'和乙個空格開始(除非他是注釋內的縮排文字)。注釋塊內的段落以僅含單個'#'的行分割。注釋塊上下方要有一空行包圍。
python **縮排為4個空格,在檔案結尾宣告
# modeline }}
空格在python **中是有意義的,因為python的語法依賴於縮排,在行首的空格稱為前導空格。在這一節不討論前導空格相關的內容,只討論非前導空格。非前導空格在 python **中沒有意義,但適當地加入非前導空格可以增進**的可讀性。
1)在二元算術、邏輯運算子前後加空格:如 a = b + c;
2)在一元字首運算子後不加空格,如 if !***: pass;
3)":"用在行尾時前後皆不加空格,如分支、迴圈、函式和類定義語言;用在非行尾時後端加空格,如 dict 物件的定義 d = 。
4)括號(含圓括號、方括號和花括號)前後不加空格,如 do_something(arg1, arg2),而不是 do_something( arg1, arg2 );
5)逗號後面加乙個空格,前面不加空格。
1)在類、函式的定義間加空行;
2)在import不同種類的模組間加工行;
3)在函式中的邏輯段落間加空行,即把相關的**緊湊寫在一起,作為乙個邏輯段落,段落間以空行分隔。
行的最大長度不得超過 80 個字元的標準。摺疊長行的方法有以下幾種方法:
1)為長變數名換乙個短名,如:
this.is.a.very.long.variable_name = this.is.another.long.variable_name
應改為:
variable_name1 = this.is.a.very.long.variable_name
variable_name2 = this.is.another.variable_name
variable_name1 = variable_name2
2)在括號(包括圓括號、方括號和花括號)內換行,如:
class edit(cbase):
def __init__(self, parent, width,
font = font, color = black, pos = pos, style = 0):
或:
very_very_very_long_variable_name = edit(parent, \
width, \
font, \
color, \
pos)
2)在長行加入續行符強行斷行,斷行的位置應在操作符前,且換行後多乙個縮排,以使維護人員看**的時候看到**行首即可判定這裡存在換行,如:
if color == white or color == black \
or color == blue:
do_something(color);
常量常量名所有字母大寫,由下劃線連線各個單詞,如:
white = 0xffffff
this_is_a_constant = 1
變數
變數名全部小寫,由下劃線連線各個單詞,如:
color = white
this_is_a_variable = 1
不論是類成員變數還是全域性變數,均不使用m或g字首。私有類成員使用單一下劃線字首標識。
變數名不應帶有型別資訊,因為 python 是動態型別語言。如 ivalue、names_list、dict_obj 等都是不好的命名。
函式函式名的命名規則與變數名相同。
類類名單詞首字母大寫,不使用下劃線連線單詞,也不加入 c、t 等字首。如:
class thisisaclass(object):
pass
模組
模組名全部小寫,對於包內使用的模組,可以加乙個下劃線字首,如:
module.py
_internal_module.py
包
包的命名規範與模組相同。
縮寫命名應當盡量使用全拼寫的單詞,縮寫的情況有如下兩種:
1)常用的縮寫,如 xml、id等,在命名時也應只大寫首字母,如
class xmlparser(object):pass
2)命名中含有長單詞,對某個單詞進行縮寫。這時應使用約定成俗的縮寫方式,如去除母音、包含子音的首字元等方式,例如:
function 縮寫為 fn
text 縮寫為 txt
object 縮寫為 obj
count 縮寫為 cnt
number 縮寫為 num,等。
特定命名方式
主要是指 __***__ 形式的系統保留字命名法。專案中也可以使用這種命名,它的意義在於這種形式的變數是唯讀的,這種形式的類成員函式盡量不要過載。如
class base(object):
def __init__(self, id, parent = none):
self.__id__ = id
self.__parent__ = parent
def __message__(self, msgid):
# ...略
其中 _id、parent_ 和 _message_ 都採用了系統保留字命名法。
語句import
import 語句有以下幾個原則需要遵守:
1)import 的次序,先import python內建模組,再import第三方模組,最後import自己開發的專案中的其它模組;這幾種模組中用空行分隔開來。
2)一條import語句import乙個模組。
3)當從模組中 import 多個物件且超過一行時,使用如下斷行法(此語法 py2.5 以上版本才支援):
from module import (obj1, obj2, obj3, obj4,
obj5, obj6)
4)不要使用 from module import *,除非是 import 常量定義模組或其它你確保不會出現命名空間衝突的模組。
賦值對於賦值語言,主要是不要做無謂的對齊,如:
a = 1
variable = 2
fn = callback_function
應該寫成:
a = 1
variable = 2
fn = callback_function
分支和迴圈
不要寫成一行,如:
if !***: pass
for i in xrange(10): print i
應該寫成:
if !***:
pass
for i in xrange(10):
print i
其他建議
避免在記憶體中處理大物件,由於python申請的記憶體不一定會返還給作業系統(有時會返還給python記憶體池)
Python編碼規範
usr bin python 應用程式要定義main函式而不要直接寫指令碼 def main dosomething if name main main 如果是全域性變數,則需要顯式加上 global python 的注釋分為兩種的概念,一種是由 開頭的 真正的 注釋,另一種是 docstrings...
python編碼規範
pep8編碼標準 編寫 1,使用4個空格進行退進,不使用tab鍵,不允許tab和空格混用 2,每行最大長度79位元組,超過部分使用反斜槓折行 3,類和全域性函式定義間隔兩個空行,類內方法定義間隔乙個空行,類內方法定義間隔乙個空行,其他地方不加空行 文件編排 1.import 部分按標準,三方和自己編...
Python編碼規範
linux 平台上,乙個 python 原始碼檔案應該以下部分組成。windows 平台上,可以省略第一項。直譯器宣告 編碼格式宣告 模組注釋或文件字串 模組匯入 常量和全域性變數宣告 頂級定義 函式或類定義 執行 usr bin env python coding utf 8 通常這裡是關於本文件...