寫出企業要求的 Python 代碼風格

寫在以前程序員

每一個人都有本身的代碼風格,隨着寫的行數增長,本身對於代碼的審美也會變的不同,這就像是一個逐漸蛻變的過程,每過一段時間回頭再去看看本身以前寫的代碼就會生出一種「這麼醜的玩意兒居然是我寫的」這種感慨。編程

以前不管是寫 C 或者是 C++ 的時候,對於代碼風格的好壞觀感徹底是憑着本身的主觀意識,也沒有什麼官方標準說這樣那樣就是好看的。等學了 Python 之後,神奇的發現 Python 官方居然給出了一種編碼規範 PEP 8,固然這個只是個標準而已,並無強制要求你們都要去遵照,但又好像大多數人都使用了 PEP 8 編碼風格,使它已經成爲了事實上的代碼風格標準。編輯器

PEP 8 編碼規範工具

Python 代碼從第一眼看上去,給人的感受就是簡潔優美,可讀性強,也就是咱們平常所說的「高顏值」。一方面是由於 Python 自身的優秀設計,好比統一的鎖進,沒有多餘的符號從而讓代碼變的更加簡潔;另外一方面就是由於它有着一套較爲統一的編碼風格,固然它自己只是編碼風格方面的建議而不是強制,相應的在編寫 Python 代碼的編輯器自動提供 PFP 8 檢查,當你編寫的代碼違反了 PEP 8 規範的時候,會給出警告信息和修正的建議。與此同時,還有專門的檢查工具對 Python 的代碼風格進行檢查。學習

由上,仍是建議在編寫 Python 代碼的時候都遵循 PEP 8 編碼規範,畢竟你之後不多是隻一我的寫代碼,將來不管是在公司或者某些開源項目中,做爲其中的一份子,確定仍是要在風格上向大衆看齊的。開發工具

PEP 8 編碼規範詳細的給出了 Python 編碼的指導,包括什麼對齊啦,包的導入順序啦,空格和註釋啦還有命名習慣等方方面面,而且還有詳細的事例。編碼

下面我以「包」的導入爲例,看一下 PEP 8 給出的具體編程指導。在 Python 中, import 應該一次只導入一個模塊,不一樣的模塊應該獨立一行:命令行

import pandas
import numpy

反面例子:設計

import pandas,numpy

若是想要從一個模塊裏面導入多個,也能夠像下面這樣:代碼規範

from subprocess import Popen, PIPE

import 語句應該處於源碼文件的頂部,位於模塊註釋和文檔字符串以後,全局變量和常量以前。在導入不一樣的庫的時候,應該按照如下的順序分組,各個分組之間以空行分隔:

  1. 導入標準庫模塊

  2. 導入相關第三方庫模塊

  3. 導入當前應用程序/庫模塊

具體事例以下所示:

import os
import time

import psutil

from test import u_test,my_test

Python 中還支持相對導入和絕對導入,在這裏仍是強推絕對導入。由於絕對導入的可讀性更好一些,也不容易出錯,即便出錯了也會給出更加詳細的錯誤信息。具體以下所示:

from sub_package import tools
from sub_package.tools  import msg

固然除了上述之外還有更多對於包的規範的描述,PEP 8 的編碼風格指導比較長,而且寫的很是詳細,因此我就不在這一一介紹了,詳細的能夠參考 Python 官網上的資料。

pycodestyle 檢查代碼規範

我在上面說過 PEP 8 只是官方給出的 Python 編碼規範,並無強制要求你們都遵照,可是又因爲你們都在用,因此它也就變成了事實上的 Python 代碼風格標準,既然都是標準了,那麼就應該有工具來檢查這個標準,這樣能夠幫助 Python 小白規範本身的代碼,也能夠幫助你們在開源或者工做中造成統一的代碼風格。

爲了達成上述的目的,官方提供了同名的命令行工具來檢查 Python 代碼是否違反了 PEP 8 規範,而且對違反規範的地方給出了相應的提示信息。

pip install pep8

規範的名字是 PEP 8 ,這個檢查代碼風格的命令行工具叫 pep8,這個很容易引發你們的困惑,所以 Python 之父建議將 pep8 從新命名爲 pycodestyle,下面咱們來看一下 pycodestyle 的用法。

首先經過 pip 安裝一下:

pip install pycodestyle

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

經過 --show-source 顯示不符合規範的源碼,以便程序員進行修改,具體以下所示:

autopep8 格式化代碼

autopep8 可以將 Python 代碼自動格式化爲 PEP 8 風格,它使用 pycodestyle 工具來決定代碼中的哪部分須要被格式化,這可以修復大部分 pycodestyle 工具中報告的排版問題。autopep8 自己也是一個用 Python 寫的工具,因此咱們仍是能夠用 pip 直接安裝:

pip install autopep8

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

autopep8 --in-place test_search.py

上述代碼若是不帶 --in-place 的話,會將 autopep8 格式化之後的代碼直接輸出到控制檯。咱們能夠用這種方式檢查 autopep8 的修改,使用 --in-place 則會直接將結果保存到源文件中。在這我繼續用上面的例子中用到的 py 文件,具體以下所示:

上面的例子中,autopep8 順利的修復了全部的問題,可是若是你這個時候查看源文件的話,你會發現源文件的內容仍是和原來同樣,並無被修改。這個時候咱們就要用到 --in-place,加上這個選項將不會有任何輸出, autopep8 會直接修改源文件。

autopep8 --in-place test_search.py

推薦一下個人Python的學習裙【 784758214 】,不管你是大牛仍是小白,是想轉行仍是想入行均可以來了解一塊兒進步一塊兒學習!裙內有開發工具,不少乾貨和技術資料分享!但願新手少走彎路

  不要太過急功近利, 慢慢玩, 精進.

  若是你覺着編程有趣, 成長也就再也不痛苦, 祝學習愉快.

相關文章
相關標籤/搜索