欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關(guān)于Python中的編碼規(guī)范

 更新時(shí)間:2023年04月12日 10:04:52   作者:不吃西紅柿丶  
這篇文章主要介紹了關(guān)于Python中的編碼規(guī)范,一千個(gè)程序員有一千套編碼規(guī)范,統(tǒng)一的編碼規(guī)范可以提高開(kāi)發(fā)效率,需要的朋友可以參考下

編碼規(guī)范

Python 編碼規(guī)范重要性的原因用一句話(huà)來(lái)概括就是:統(tǒng)一的編碼規(guī)范可以提高開(kāi)發(fā)效率。

無(wú)論你是 編程者,還是 閱讀者,好的規(guī)范能讓你的效率事半功倍,甚至機(jī)器在運(yùn)行時(shí),提高程序運(yùn)行的效率。今天西紅柿就帶你盤(pán)一盤(pán)python的編碼規(guī)范。

ps.python的代碼編寫(xiě)基本上都要遵循PEP8的風(fēng)格

1、分號(hào)

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

2、命名

module_name, package_name, ClassName, method_name

應(yīng)該避免的名稱(chēng)

  1. 單字符名稱(chēng), 除了計(jì)數(shù)器和迭代器.
  2. 包/模塊名中的連字符(-)
  3. 雙下劃線(xiàn)開(kāi)頭并結(jié)尾的名稱(chēng)(Python保留, 例如__init__)

命名約定

  1. 所謂"內(nèi)部(Internal)"表示僅模塊內(nèi)可用, 或者, 在類(lèi)內(nèi)是保護(hù)或私有的.
  2. 用單下劃線(xiàn)(_)開(kāi)頭表示模塊變量或函數(shù)是protected的(使用import * from時(shí)不會(huì)包含)
  3. 用雙下劃線(xiàn)(__)開(kāi)頭的實(shí)例變量或方法表示類(lèi)內(nèi)私有.
  4. 將相關(guān)的類(lèi)和頂級(jí)函數(shù)放在同一個(gè)模塊里. 不像Java, 沒(méi)必要限制一個(gè)類(lèi)一個(gè)模塊.
  5. 對(duì)類(lèi)名使用大寫(xiě)字母開(kāi)頭的單詞(如CapWords, 即Pascal風(fēng)格), 但是模塊名應(yīng)該用小寫(xiě)加下劃線(xiàn)的方式(如lower_with_under.py). 盡管已經(jīng)有很多現(xiàn)存的模塊使用類(lèi)似于CapWords.py這樣的命名, 但現(xiàn)在已經(jīng)不鼓勵(lì)這樣做, 因?yàn)槿绻K名碰巧和類(lèi)名一致, 這會(huì)讓人困擾.

3、行長(zhǎng)度

每行不超過(guò)80個(gè)字符

以下情況除外:

  1. 長(zhǎng)的導(dǎo)入模塊語(yǔ)句注釋里的URL
  2. 不要使用反斜杠連接行。

Python會(huì)將 圓括號(hào), 中括號(hào)和花括號(hào)中的行隱式的連接起來(lái) , 你可以利用這個(gè)特點(diǎn). 如果需要, 你可以在表達(dá)式外圍增加一對(duì)額外的圓括號(hào)。

推薦: 

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'):

如果一個(gè)文本字符串在一行放不下, 可以使用圓括號(hào)來(lái)實(shí)現(xiàn)隱式行連接:

x = ('這是一個(gè)非常長(zhǎng)非常長(zhǎng)非常長(zhǎng)非常長(zhǎng) '
     '非常長(zhǎng)非常長(zhǎng)非常長(zhǎng)非常長(zhǎng)非常長(zhǎng)非常長(zhǎng)的字符串')

4、縮進(jìn)

用4個(gè)空格來(lái)縮進(jìn)代碼

絕對(duì)不要用tab, 也不要tab和空格混用. 對(duì)于行連接的情況, 你應(yīng)該要么垂直對(duì)齊換行的元素(見(jiàn) :ref:`行長(zhǎng)度 <line_length>` 部分的示例), 或者使用4空格的懸掛式縮進(jìn)(這時(shí)第一行不應(yīng)該有參數(shù)):

       # 與起始變量對(duì)齊
       foo = long_function_name(var_one, var_two,
                                var_three, var_four)
 
       # 字典中與起始值對(duì)齊
       foo = {
           long_dictionary_key: value1 +
                                value2,
           ...
       }

5、空行

頂級(jí)定義之間空兩行, 方法定義之間空一行

頂級(jí)定義之間空兩行, 比如函數(shù)或者類(lèi)定義. 方法定義, 類(lèi)定義與第一個(gè)方法之間, 都應(yīng)該空一行. 函數(shù)或方法中, 某些地方要是你覺(jué)得合適, 就空一行.

6、空格

按照標(biāo)準(zhǔn)的排版規(guī)范來(lái)使用標(biāo)點(diǎn)兩邊的空格

括號(hào)內(nèi)不要有空格.

按照標(biāo)準(zhǔn)的排版規(guī)范來(lái)使用標(biāo)點(diǎn)兩邊的空格

正確示范: spam(ham[1], {eggs: 2}, [])
錯(cuò)誤示范: spam( ham[ 1 ], { eggs: 2 }, [ ] )

7、類(lèi)

類(lèi)應(yīng)該在其定義下有一個(gè)用于描述該類(lèi)的文檔字符串. 如果你的類(lèi)有公共屬性(Attributes), 那么文檔中應(yīng)該有一個(gè)屬性(Attributes)段. 并且應(yīng)該遵守和函數(shù)參數(shù)相同的格式.

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、塊注釋和行注釋

最需要寫(xiě)注釋的是代碼中那些技巧性的部分. 如果你在下次 代碼審查 的時(shí)候必須解釋一下, 那么你應(yīng)該現(xiàn)在就給它寫(xiě)注釋. 對(duì)于復(fù)雜的操作, 應(yīng)該在其操作開(kāi)始前寫(xiě)上若干行注釋. 對(duì)于不是一目了然的代碼, 應(yīng)在其行尾添加注釋.

# 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

為了提高可讀性, 注釋?xiě)?yīng)該至少離開(kāi)代碼2個(gè)空格.

另一方面, 絕不要描述代碼. 假設(shè)閱讀代碼的人比你更懂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)
錯(cuò)誤示范: 
    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、導(dǎo)包

每個(gè)導(dǎo)入應(yīng)該獨(dú)占一行

正確示范: 
import os 
import sys
錯(cuò)誤示范:   import os, sys

導(dǎo)入總應(yīng)該放在文件頂部, 位于模塊注釋和文檔字符串之后, 模塊全局變量和常量之前. 導(dǎo)入應(yīng)該按照從最通用到最不通用的順序分組:

標(biāo)準(zhǔn)庫(kù)導(dǎo)入第三方庫(kù)導(dǎo)入應(yīng)用程序指定導(dǎo)入

【總結(jié)】

1.命名

  1. 函數(shù)、變量及屬性都應(yīng)該用小寫(xiě)單詞拼寫(xiě),只見(jiàn)用_連接,不遵循駝峰命名法
  2. 類(lèi)與異常應(yīng)該首字母大寫(xiě),不要用_連接
  3. 受保護(hù)的實(shí)例屬性,應(yīng)以單下劃線(xiàn)開(kāi)頭
  4. 實(shí)例的私有屬性,應(yīng)以雙下劃線(xiàn)開(kāi)頭
  5. 模塊級(jí)別的變量單詞都要大寫(xiě),中間以單下劃線(xiàn)隔開(kāi)
  6. 變量要盡可能有意義

2.空白

  1. 和語(yǔ)法相關(guān)的每一層縮進(jìn)都用4個(gè)空格表示
  2. 賦值時(shí)等號(hào)兩邊都要有一個(gè)空格
  3. 每一行所占用的字符數(shù)應(yīng)不超過(guò)79,實(shí)際操作中應(yīng)當(dāng)盡量不讓代碼編輯器的行滾動(dòng)條顯示出來(lái)
  4. 在使用函數(shù)進(jìn)行函數(shù)式編程時(shí),函數(shù)之間要空兩行
  5. 在類(lèi)中的函數(shù),函數(shù)之間應(yīng)該空一行
  6. 函數(shù)與類(lèi)是同一個(gè)級(jí)別,則他們之間應(yīng)該空兩行
  7. 對(duì)于超出每行規(guī)定的字符數(shù)的長(zhǎng)表達(dá)式,應(yīng)當(dāng)敲回車(chē)縮進(jìn),通常除了首行其余各行都要在原來(lái)的基礎(chǔ)上再次縮進(jìn)4個(gè)空格

3.語(yǔ)句

  1. 判斷變量是否為None、False或True時(shí)不要用==,要用is,例如,if a is None
  2. import語(yǔ)句應(yīng)放在句首,導(dǎo)入時(shí)要盡量使用絕對(duì)導(dǎo)入不要使用相對(duì)導(dǎo)入,并且導(dǎo)入時(shí)最好指定相應(yīng)的模塊的某一具體功能,例如,from datetime import datetime
  3. 模塊導(dǎo)入時(shí)應(yīng)根據(jù)標(biāo)準(zhǔn)庫(kù)模塊、第三方模塊以及自用模塊進(jìn)行分類(lèi)
  4. 檢測(cè)容器不為空時(shí),應(yīng)使用if 容器名,例如,lists = [] if lists
  5. 采用內(nèi)聯(lián)形式的否定詞,不要把否定詞放在整個(gè)表達(dá)式的前面,例如,應(yīng)該if a is not None 而不是 if not a is None

4.注釋

  1. 對(duì)某些重要的代碼塊的功能說(shuō)明,應(yīng)使用單行注釋
  2. 對(duì)整個(gè)模塊功能的說(shuō)明應(yīng)使用多行注釋
  3. 對(duì)類(lèi)或函數(shù)的功能及使用方法的詳細(xì)說(shuō)明應(yīng)使用文檔字符串
  4. python的注釋盡量使用英文

到此這篇關(guān)于關(guān)于Python中的編碼規(guī)范的文章就介紹到這了,更多相關(guān)Python編碼規(guī)范內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • python FastApi實(shí)現(xiàn)數(shù)據(jù)表遷移流程詳解

    python FastApi實(shí)現(xiàn)數(shù)據(jù)表遷移流程詳解

    今天我們來(lái)聊一聊在FastApi里面,數(shù)據(jù)遷移工作,F(xiàn)astAPI是一個(gè)現(xiàn)代的,快速(高性能)python web框架。本文將利用fastapi實(shí)現(xiàn)數(shù)據(jù)表遷移功能,文中的示例代碼講解詳細(xì),需要的可以參考一下
    2022-08-08
  • Python利用treap實(shí)現(xiàn)雙索引的方法

    Python利用treap實(shí)現(xiàn)雙索引的方法

    所遍歷的元素一定是遞增(小堆)或是遞減(大堆)關(guān)系,但是我們無(wú)法得知左子樹(shù)與右子樹(shù)兩部分節(jié)點(diǎn)的排序關(guān)系。本文就來(lái)講講算法和數(shù)據(jù)結(jié)構(gòu)共同滿(mǎn)足一組特性,感興趣的小伙伴請(qǐng)參考下面文章的內(nèi)容
    2021-09-09
  • 利用Python實(shí)現(xiàn)自動(dòng)工作匯報(bào)的腳本分享

    利用Python實(shí)現(xiàn)自動(dòng)工作匯報(bào)的腳本分享

    這篇文章主要為大家詳細(xì)介紹了如何利用Python實(shí)現(xiàn)一個(gè)自動(dòng)工作匯報(bào)的腳本,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定幫助,需要的可以參考一下
    2022-08-08
  • 余弦相似性計(jì)算及python代碼實(shí)現(xiàn)過(guò)程解析

    余弦相似性計(jì)算及python代碼實(shí)現(xiàn)過(guò)程解析

    這篇文章主要介紹了余弦相似性計(jì)算及python代碼實(shí)現(xiàn)過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-09-09
  • python安裝PIL模塊時(shí)Unable to find vcvarsall.bat錯(cuò)誤的解決方法

    python安裝PIL模塊時(shí)Unable to find vcvarsall.bat錯(cuò)誤的解決方法

    這篇文章給大家分享了關(guān)于python安裝PIL模塊時(shí)遇到Unable to find vcvarsall.bat錯(cuò)誤的解決方法,相信會(huì)對(duì)不少人有一定的參考借鑒價(jià)值。有需要的朋友們下面來(lái)一起看看吧。
    2016-09-09
  • Django之 ArrayAgg與Admin技巧學(xué)習(xí)

    Django之 ArrayAgg與Admin技巧學(xué)習(xí)

    這篇文章主要為大家介紹了Django之ArrayAgg與Admin的技巧學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Linux添加Python?path方法及修改環(huán)境變量的三種方法

    Linux添加Python?path方法及修改環(huán)境變量的三種方法

    這篇文章主要介紹了Linux添加Python?path方法及修改環(huán)境變量的三種方法,Linux 下設(shè)置環(huán)境變量有三種方法,一種用于當(dāng)前終端,一種用于當(dāng)前用戶(hù),一種用于所有用戶(hù),本文對(duì)每種方法給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Python爬蟲(chóng)之Selenium多窗口切換的實(shí)現(xiàn)

    Python爬蟲(chóng)之Selenium多窗口切換的實(shí)現(xiàn)

    這篇文章主要介紹了Python爬蟲(chóng)之Selenium多窗口切換的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python 多線(xiàn)程共享全局變量的優(yōu)劣

    python 多線(xiàn)程共享全局變量的優(yōu)劣

    這篇文章主要介紹了python 多線(xiàn)程共享全局變量的優(yōu)劣,幫助大家更好的理解和學(xué)習(xí)python多線(xiàn)程,感興趣的朋友可以了解下
    2020-09-09
  • python條件語(yǔ)句和while循環(huán)語(yǔ)句

    python條件語(yǔ)句和while循環(huán)語(yǔ)句

    這篇文章主要介紹了python條件語(yǔ)句和while循環(huán)語(yǔ)句,文章基于python的相關(guān)資料展開(kāi)對(duì)其條件語(yǔ)句及while循環(huán)語(yǔ)句的詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考一下
    2022-04-04

最新評(píng)論