您現在的位置是:首頁 > 籃球

天天都在寫python,你寫的破程式碼,別人能看懂嗎?

  • 由 猿牛網 發表于 籃球
  • 2022-10-22
簡介score: ’ + str(n)10、導包每個匯入應該獨佔一行正確示範:import osimport sys錯誤示範:import os, sys匯入總應該放在檔案頂部, 位於模組註釋和文件字串之後, 模組全域性變數和常量之前

茜這個字母是什麼

Python 編碼規範重要性的原因用一句話來概括就是:統一的編碼規範可以提高開發效率。

無論你是 程式設計者,還是 閱讀者,好的規範能讓你的效率事半功倍,甚至機器在執行時,提高程式執行的效率。今天西紅柿就帶你盤一盤python的編碼規範。

ps。python的程式碼編寫基本上都要遵循PEP8的風格

1、分號

不要在行尾加分號, 也不要用分號將兩條命令放在同一行。

2、命名

module_name, package_name, ClassName, method_name

應該避免的名稱

單字元名稱, 除了計數器和迭代器。

包/模組名中的連字元(-)

雙下劃線開頭並結尾的名稱(Python保留, 例如__init__)

命名約定

所謂“內部(Internal)”表示僅模組內可用, 或者, 在類內是保護或私有的。

用單下劃線(_)開頭表示模組變數或函式是protected的(使用import * from時不會包含)。

用雙下劃線(__)開頭的例項變數或方法表示類內私有。

將相關的類和頂級函式放在同一個模組裡。 不像Java, 沒必要限制一個類一個模組。

對類名使用大寫字母開頭的單詞(如CapWords, 即Pascal風格), 但是模組名應該用小寫加下劃線的方式(如lower_with_under。py)。 儘管已經有很多現存的模組使用類似於CapWords。py這樣的命名, 但現在已經不鼓勵這樣做, 因為如果模組名碰巧和類名一致, 這會讓人困擾。

3、行長度

每行不超過80個字元

以下情況除外:

長的匯入模組語句

註釋裡的URL

不要使用反斜槓連線行。

Python會將 圓括號, 中括號和花括號中的行隱式的連線起來 , 你可以利用這個特點。 如果需要, 你可以在表示式外圍增加一對額外的圓括號。

推薦:

foo_bar(self, width, height, color=‘black’, design=None, x=‘foo’,

emphasis=None, highlight=0)

if (width == 0 and height == 0 and

color == ‘red’ and emphasis == ‘strong’):

如果一個文字字串在一行放不下, 可以使用圓括號來實現隱式行連線:

x = (‘這是一個非常長非常長非常長非常長 ’

‘非常長非常長非常長非常長非常長非常長的字串’)

4、縮排

用4個空格來縮排程式碼

絕對不要用tab, 也不要tab和空格混用。 對於行連線的情況, 你應該要麼垂直對齊換行的元素(見 :ref:`行長度 ` 部分的示例), 或者使用4空格的懸掛式縮排(這時第一行不應該有引數):

# 與起始變數對齊

foo = long_function_name(var_one, var_two,

var_three, var_four)

# 字典中與起始值對齊

foo = {

long_dictionary_key: value1 +

value2,

。。。

}

5、空行

頂級定義之間空兩行, 方法定義之間空一行

頂級定義之間空兩行, 比如函式或者類定義。 方法定義, 類定義與第一個方法之間, 都應該空一行。 函式或方法中, 某些地方要是你覺得合適, 就空一行。

6、空格

按照標準的排版規範來使用標點兩邊的空格

括號內不要有空格。

按照標準的排版規範來使用標點兩邊的空格

正確示範: spam(ham[1], {eggs: 2}, [])

錯誤示範: spam( ham[ 1 ], { eggs: 2 }, [ ] )

7、類

類應該在其定義下有一個用於描述該類的文件字串。 如果你的類有公共屬性(Attributes), 那麼文件中應該有一個屬性(Attributes)段。 並且應該遵守和函式引數相同的格式。

class SampleClass(object):

“”“Summary of class here。

Longer class information。。。。

Longer class information。。。。

Attributes:

likes_spam: A boolean indicating if we like SPAM or not。

eggs: An integer count of the eggs we have laid。

”“”

def __init__(self, likes_spam=False):

“”“Inits SampleClass with blah。”“”

self。likes_spam = likes_spam

self。eggs = 0

def public_method(self):

“”“Performs operation blah。”“”

8、塊註釋和行註釋

最需要寫註釋的是程式碼中那些技巧性的部分。 如果你在下次 程式碼審查 的時候必須解釋一下, 那麼你應該現在就給它寫註釋。 對於複雜的操作, 應該在其操作開始前寫上若干行註釋。 對於不是一目瞭然的程式碼, 應在其行尾添加註釋。

# We use a weighted dictionary search to find out where i is in

# the array。 We extrapolate position based on the largest num

# in the array and the array size and then do binary search to

# get the exact number。

if i & (i-1) == 0: # true iff i is a power of 2

為了提高可讀性, 註釋應該至少離開程式碼2個空格。

另一方面, 絕不要描述程式碼。 假設閱讀程式碼的人比你更懂Python, 他只是不知道你的程式碼要做什麼。

# BAD COMMENT: Now go through the b array and make sure whenever i occurs

# the next element is i+1

9、字串

正確示範:

x = a + b

x = ‘%s, %s!’ % (imperative, expletive)

x = ‘{}, {}!’。format(imperative, expletive)

x = ‘name: %s; score: %d’ % (name, n)

x = ‘name: {}; score: {}’。format(name, n)

錯誤示範:

x = ‘%s%s’ % (a, b) # use + in this case

x = ‘{}{}’。format(a, b) # use + in this case

x = imperative + ‘, ’ + expletive + ‘!’

x = ‘name: ’ + name + ‘; score: ’ + str(n)

10、導包

每個匯入應該獨佔一行

正確示範:

import os

import sys

錯誤示範:

import os, sys

匯入總應該放在檔案頂部, 位於模組註釋和文件字串之後, 模組全域性變數和常量之前。 匯入應該按照從最通用到最不通用的順序分組:

標準庫匯入

第三方庫匯入

應用程式指定匯入

【總結】

1。命名

函式、變數及屬性都應該用小寫單詞拼寫,只見用_連線,不遵循駝峰命名法

類與異常應該首字母大寫,不要用_連線

受保護的例項屬性,應以單下劃線開頭

例項的私有屬性,應以雙下劃線開頭

模組級別的變數單詞都要大寫,中間以單下劃線隔開

變數要儘可能有意義

2。空白

和語法相關的每一層縮排都用4個空格表示

賦值時等號兩邊都要有一個空格

每一行所佔用的字元數應不超過79,實際操作中應當儘量不讓程式碼編輯器的行捲軸顯示出來

在使用函式進行函數語言程式設計時,函式之間要空兩行

在類中的函式,函式之間應該空一行

函式與類是同一個級別,則他們之間應該空兩行

對於超出每行規定的字元數的長表示式,應當敲回車縮排,通常除了首行其餘各行都要在原來的基礎上再次縮排4個空格

3。語句

判斷變數是否為None、False或True時不要用==,要用is,例如,if a is None

import語句應放在句首,匯入時要儘量使用絕對匯入不要使用相對匯入,並且匯入時最好指定相應的模組的某一具體功能,例如,from datetime import datetime

模組匯入時應根據標準庫模組、第三方模組以及自用模組進行分類

檢測容器不為空時,應使用if 容器名,例如,lists = [] if lists

採用內聯形式的否定詞,不要把否定詞放在整個表示式的前面,例如,應該if a is not None 而不是 if not a is None

4。註釋

對某些重要的程式碼塊的功能說明,應使用單行註釋

對整個模組功能的說明應使用多行註釋

對類或函式的功能及使用方法的詳細說明應使用文件字串

python的註釋儘量使用英文

天天都在寫python,你寫的破程式碼,別人能看懂嗎?

Top