Python之禪&編碼規範&一鍵排版

首先,各個編程語言都有自己的代碼規範,統一的代碼規範,不僅能提高代碼的可讀性,還能提升代碼的維護性,團隊內部的集成也會更加順暢,同時也能更輕易發現代碼的問題。

團隊編程的目標,所有人寫的代碼像一個人寫出來的。

  • Python之禪

都說Python是一門優雅的語言,那就更少不了裝飾和美化。Python在開發之初,已經規範了代碼的整體原則,那就是Python之禪。

在交互式解釋器中輸入import this就會顯示 Tim Peters 的 “The Zen of Python”
在這裏插入圖片描述
當然,也可以在pycharm中:

import this
print()

放張高清大圖:
在這裏插入圖片描述

整體意思就是Python以優雅簡潔爲目標。具體翻譯,大家可以參考下:

在這裏插入圖片描述

  • 編碼規範

目前比較通用的是pep8規範,大家可以根據下方的官方文檔進行學習,其中的PEP8Style Guide for Python Code,譯爲:Python代碼樣式指南。

pep8規範官網地址:https://www.python.org/dev/peps/pep-0008/,內容不少,大家沒事可以去詳細看看。

其中最值得初學者注意的就是代碼佈局了,養成良好的代碼佈局習慣,不僅自己看着賞心悅目,也能讓將來的同行少掉兩根頭髮because你那亂七八糟的代碼。

然後就講講代碼佈局:

  • 縮進

  • 每個縮進級別使用4個空格。

  • 續行應使用在括號,方括號和花括號內使用Python的隱式線垂直對齊包裝的元素,或使用懸掛式縮進 。使用懸掛式凹痕時,應考慮以下幾點:第一行不應有任何論點,而應使用進一步的縮進來清楚地將其區分爲延續行。

#與打開定界符對齊。
foo = long_function_name(var_one,var_two,
                         var_three,var_four)

#添加4個空格(額外的縮進級別)以將參數與其餘參數區分開。
def long_function_name(
        var_one,var_two,var_three,
        var_four)print(var_one)

#懸掛的縮進應添加一個級別。
foo = long_function_name(
    var_one,var_two,
    var_three,var_four)

右邊括號也可以另起一行。有兩種格式,建議第2種。

# 右括號不回退,個人不推薦
my_list = [
    1, 2, 3,
    4, 5, 6,
    ]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
    )

# 右括號回退
my_list = [
    1, 2, 3,
    4, 5, 6,
]
result = some_function_that_takes_arguments(
    'a', 'b', 'c',
    'd', 'e', 'f',
)
  • 製表符或空格

  • 空格是首選的縮進方法。

  • 製表符應僅用於與已經用製表符縮進的代碼保持一致。

  • 在 list, dict, tuple, set, 參數列表的 , 後面加一個空格

  • 在 dict 的 : 後面加一個空格

  • Python 3不允許混合使用製表符和空格進行縮進

  • 最大行寬

  • 限制所有行的最大行寬爲79字符

  • 文本長塊,比如文檔字符串或註釋,行長度應限制爲72個字符

  • 空行

  • function 和 class 頂上兩個空行

  • class 的 method 之間一個空行

  • 函數內邏輯無關的段落之間空一行,不要過度使用空行

  • 不要把多個語句寫在一行,然後用 ; 隔開

  • if/for/while 語句中,即使執行語句只有一句,也要另起一行

  • 導入在單獨行(包)

  • 導入位置:在文件的頂部,在模塊註釋和文檔字符串之後,在模塊全局變量和常量之前

  • 導入順序:標準庫,相關的第三方庫,本地庫。各組的導入之間要有空行。

  • 禁止使用通配符導入:通配符導入(from import *)應該避免,因爲它不清楚命名空間有哪些名稱存,混淆讀者和許多自動化的工具。

  • 括號裏邊避免空格

# 括號裏邊避免空格
#推薦
spam(ham[1], {eggs: 2})
# 不推薦
spam( ham[ 1 ], { eggs: 2 } )
  • 逗號,冒號,分號之前避免空格
if x == 4: print x, y; x, y = y, x
  • 函數調用的左括號之前不能有空格
# 推薦
spam(1)
dct['key'] = lst[index]

spam (1)
dct ['key'] = lst [index]
  • 賦值等操作符前後不能因爲對齊而添加多個空格
x = 1
y = 2
variable = 3
  • 二元運算符兩邊放置一個空格
  • 涉及 =、符合操作符 ( += , -=等)、比較( == , < , > , != , <> , <= , >= , in , not in , is , is not )、布爾( and , or , not )
  • 優先級高的運算符或操作符的前後不建議有空格
i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)
  • 關鍵字參數和默認值參數的前後不要加空格
def complex(real, imag=0.0):
    return magic(r=real, i=imag)
  • 包和模塊名

  • 模塊名要簡短,全部用小寫字母,可使用下劃線以提高可讀性

  • 包名和模塊名類似,但不推薦使用下劃線

  • 避免採用如下名字

  • 決不要用字符’l’(小寫字母el),‘O’(大寫字母oh),或 ‘I’(大寫字母eye) 作爲單個字符的變量名。

  • 一些字體中,這些字符不能與數字1和0區別。用’L’ 代替’l’時。

  • 一鍵排版

pycharm有個很好用的插件:CodeGlance
依次 File -> settings -> Plugins 搜索 CodeGlance 安裝
在這裏插入圖片描述
安裝完後重啓pycharm
也不需要幹別的,你就只管敲代碼,敲了一頓後發現代碼好亂:(我這裏隨便敲兩句舉個例子)在這裏插入圖片描述沒關係,看見代碼下面的灰色波浪線了嗎,把鼠標放在上面,會出現提示:
在這裏插入圖片描述
點擊那個 Reformat file ,然後你會發現:
在這裏插入圖片描述
代碼自動變工整了。

不過呢,由於我們上面說了,目前python大多遵守pep8規範,在這裏也有一個與pep8相關的工具推薦給大家:

pip install autopep8

依次 File -> settings -> Tools -> External Tools,然後點擊那個加號
在這裏插入圖片描述
然後依次填寫下面的配置:

autopep8(這是名字,可以隨便寫,建議寫這個)

autopep8 

--in-place --aggressive --aggressive $FilePath$

$ProjectFileDir$

$FILE_PATH$\:$LINE$\:$COLUMN$\:.*

在這裏插入圖片描述
配置完了就是這個樣子:
在這裏插入圖片描述
使用方法有兩種:
可以在最上面 Tools -> External Tools -> autopep8 規範代碼
在這裏插入圖片描述
也可以在左邊文件欄右鍵當前文件,選擇 External Tools -> autopep8 也可以對當前代碼進行規範
在這裏插入圖片描述
就這麼多,OK!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章