131 1300 0010
行業(yè)動態(tài)
  • 導(dǎo)航欄目
  • 產(chǎn)品新聞
  • 企業(yè)新聞
  • 行業(yè)動態(tài)
  • Python官方竟然給出了一種編碼規(guī)范PEP 8
    Python官方竟然給出了一種編碼規(guī)范PEP 8
  • Python官方竟然給出了一種編碼規(guī)范PEP 8
  •   發(fā)布日期: 2019-01-02  瀏覽次數(shù): 1,478

    寫在之前

    每個人都有自己的代碼風格,隨著寫的行數(shù)增加,自己對于代碼的審美也會變的不一樣,這就像是一個逐漸蛻變的過程,每過一段時間回頭再去看看自己之前寫的代碼就會生出一種「這么丑的玩意兒竟然是我寫的」這種感慨。

     

    之前不論是寫 C 或者是 C++ 的時候,對于代碼風格的好壞觀感完全是憑著自己的主觀意識,也沒有什么官方標準說這樣那樣就是好看的。等學(xué)了 Python 以后,神奇的發(fā)現(xiàn) Python 官方竟然給出了一種編碼規(guī)范 PEP 8,當然這個只是個標準而已,并沒有強制要求大家都要去遵守,但又好像大多數(shù)人都使用了 PEP 8 編碼風格,使它已經(jīng)成為了事實上的代碼風格標準。

    PEP 8 編碼規(guī)范

    Python 代碼從第一眼看上去,給人的感覺就是簡潔優(yōu)美,可讀性強,也就是我們?nèi)粘Kf的「高顏值」。一方面是因為 Python 自身的優(yōu)秀設(shè)計,比如統(tǒng)一的鎖進,沒有多余的符號從而讓代碼變的更加簡潔;另一方面就是因為它有著一套較為統(tǒng)一的編碼風格,當然它本身只是編碼風格方面的建議而不是強制,相應(yīng)的在編寫 Python 代碼的編輯器自動提供 PFP 8 檢查,當你編寫的代碼違反了 PEP 8 規(guī)范的時候,會給出警告信息和修正的建議。與此同時,還有專門的檢查工具對 Python 的代碼風格進行檢查。

    由上,還是建議在編寫 Python 代碼的時候都遵循 PEP 8 編碼規(guī)范,畢竟你以后不可能是只一個人寫代碼,未來不論是在公司或者某些開源項目中,作為其中的一份子,肯定還是要在風格上向大眾看齊的。

    PEP 8 編碼規(guī)范詳細的給出了 Python 編碼的指導(dǎo),包括什么對齊啦,包的導(dǎo)入順序啦,空格和注釋啦還有命名習(xí)慣等方方面面,并且還有詳細的事例。

    下面我以「包」的導(dǎo)入為例,看一下 PEP 8 給出的具體編程指導(dǎo)。在 Python 中, import 應(yīng)該一次只導(dǎo)入一個模塊,不同的模塊應(yīng)該獨立一行:

    import pandasimport numpy

    反面例子:

    import pandas,numpy

    如果想要從一個模塊里面導(dǎo)入多個,也可以像下面這樣:

    from subprocess import Popen, PIPE

    import 語句應(yīng)該處于源碼文件的頂部,位于模塊注釋和文檔字符串之后,全局變量和常量之前。在導(dǎo)入不同的庫的時候,應(yīng)該按照以下的順序分組,各個分組之間以空行分隔:

    導(dǎo)入標準庫模塊

    導(dǎo)入相關(guān)第三方庫模塊

    導(dǎo)入當前應(yīng)用程序/庫模塊

    具體事例如下所示:

    import osimport timeimport psutilfrom test import u_test,my_test

    Python 中還支持相對導(dǎo)入和絕對導(dǎo)入,在這里還是強推絕對導(dǎo)入。因為絕對導(dǎo)入的可讀性更好一些,也不容易出錯,即使出錯了也會給出更加詳細的錯誤信息。具體如下所示:

    from sub_package import toolsfrom sub_package.tools  import msg

    當然除了上述以外還有更多對于包的規(guī)范的描述,PEP 8 的編碼風格指導(dǎo)比較長,并且寫的非常詳細,所以我就不在這一一介紹了,詳細的可以參考 Python 官網(wǎng)上的資料。

    pycodestyle 檢查代碼規(guī)范

    我在上面說過 PEP 8 只是官方給出的 Python 編碼規(guī)范,并沒有強制要求大家都遵守,但是又由于大家都在用,所以它也就變成了事實上的 Python 代碼風格標準,既然都是標準了,那么就應(yīng)該有工具來檢查這個標準,這樣可以幫助 Python 小白規(guī)范自己的代碼,也可以幫助大家在開源或者工作中形成統(tǒng)一的代碼風格。

    為了達成上述的目的,官方提供了同名的命令行工具來檢查 Python 代碼是否違反了 PEP 8 規(guī)范,并且對違反規(guī)范的地方給出了相應(yīng)的提示信息。

    pip install pep8

    規(guī)范的名字是 PEP 8 ,這個檢查代碼風格的命令行工具叫 pep8,這個很容易引起大家的困惑,因此 Python 之父建議將 pep8 重新命名為 pycodestyle,下面我們來看一下 pycodestyle 的用法。

    首先通過 pip 安裝一下:

    pip install pycodestyle

    對一個或者多個文件運行 pycodestyle,打印檢查報告:

    通過 --show-source 顯示不符合規(guī)范的源碼,以便程序員進行修改,具體如下所示:

    autopep8 格式化代碼

    autopep8 能夠?qū)?Python 代碼自動格式化為 PEP 8 風格,它使用 pycodestyle 工具來決定代碼中的哪部分需要被格式化,這能夠修復(fù)大部分 pycodestyle 工具中報告的排版問題。autopep8 本身也是一個用 Python 寫的工具,所以我們還是可以用 pip 直接安裝:

    pip install autopep8

    它的使用方式也很簡單,具體如下所示:

    autopep8 --in-place test_search.py

    上述代碼如果不帶 --in-place 的話,會將 autopep8 格式化以后的代碼直接輸出到控制臺。我們可以用這種方式檢查 autopep8 的修改,使用 --in-place 則會直接將結(jié)果保存到源文件中。在這我繼續(xù)用上面的例子中用到的 py 文件,具體如下所示:

    上面的例子中,autopep8 順利的修復(fù)了所有的問題,但是如果你這個時候查看源文件的話,你會發(fā)現(xiàn)源文件的內(nèi)容還是和原來一樣,并沒有被修改。這個時候我們就要用到 --in-place,加上這個選項將不會有任何輸出, autopep8 會直接修改源文件。

    autopep8 --in-place test_search.py


  • ·上一篇:
    ·下一篇:
  • 其他關(guān)聯(lián)資訊
    深圳市日月辰科技有限公司
    地址:深圳市寶安區(qū)松崗鎮(zhèn)潭頭第二工業(yè)城A區(qū)27棟3樓
    電話:0755-2955 6626
    傳真:0755-2978 1585
    手機:131 1300 0010
    郵箱:hu@szryc.com

    深圳市日月辰科技有限公司 版權(quán)所有:Copyright?2010-2023 xbquwah.cn 電話:13113000010 粵ICP備2021111333號