【初心者向け】Pythonのコーディング規約と整形ツール

【初心者向け】Pythonのコーディング規約と整形ツール プログラミング

この記事ではPythonのコーディング規約とコードの整形ツールについて解説してきます。


直接的にPythonの処理には影響しませんが、統一したルールを設けることで、チームなど複数人で開発する場合などで、効率的に開発を進められ、予期せぬバグを作り出すことを回避につながる可能性があります

PEP8

Pythonには、PEP8というコーディング規約があります。PEP8はPythonのコーディング規約を定義した基準になります。
PEP8には、コーディングコメント命名規約に関する定義があります。

コーディングルール

Pythonのコーディングの規約では主に以下のようなものがあります。

  • モジュールのインポートは、標準ライブラリ、サードパーティ、独自作成の順
  • インデントは空白4つ
  • 引数内やタプルなどのインデントは縦にそろえる
  • 演算子の前後は空白1つ
  • カンマの後ろは空白1つ
  • 関数の後は2行空ける
# インポートの順(標準→サードパーティ→独自)
import os,sys
import sys
from datetime import date, time, datetime
import flask
import original

# インデントは空白4つ
def func():
    pass


# 引数内のインデントを盾にそろえる
def func(arg1,
         arg2,
         arg3):
    pass


# 演算子の前後は空白1つ
a = b + c

# カンマの後ろは空白1つ
l = ["banana", "orange", "grape"]

コメントルール

コメントでは以下のようなルールがあります。

  • ブロックコメント:#空白1つ空けて1行で記載する
  • インラインコメント:コードの後に、空白2つ#空白1つで記載する
  • docstring:関数内に”””説明”””ダブルクォーテーションを3つ繋げコメントを記載する。1行目は簡易説明で2行目を空けて詳細説明を記載する
# ブロックコメント

print("hello" )  # インラインコメント

def func():
    """簡易説明(docstring)
    (1行あける)
    複数行の詳細説明
    """
    pass

命名規約

変数や関数、クラスなどを定義する際、推奨される命名規約もあります。

  • CamelCase:クラス名
  • lowercase:変数名・モジュール名
  • lower_case_with_underscore:変数名・関数名
  • UPPERCASE:定数
  • UPPER_CASE_WITH_UNDERSCORE:定数
# CamelCase
class ClassName:
    pass


# lowercase
var = 1
import os

# lower_case_with_underscore
var_name = 1


def func_name():
    pass


# UPPERCASE/UPPER_CASE_WITH_UNDERSCORE
URL = "https://example.com"
ENDPOINT_URL = "https://example.com"

flake8

Flake8は、PEP8に準拠したコーディングとなっているか判定や修正を行うことができるライブラリです
コマンドを実行し、ファイル内に規約に準拠していないものがある場合に、エラー表示をします。
エラー内容は、「ファイル名:行数:位置:エラーコード:エラー詳細」になります。

#コマンド実行
flake8 python.py

#特定のエラーを無視する場合
flake8 python.py --ignore:E301,302

#特定の行のエラーを無視する場合(ファイル内に記述)
print(1,2)  #noqa

Black

Blackは、同様にコーディング規約に準拠しているか確認できるツールです。Blackを使用すると強制的にコードを修正してくれます

#blackのコマンド実行
black pythonfile.py

#checkオプション(ファイル更新は行わない)
black pythonfile.py --check

#diffオプション(ファイル更新は行わない)
black pythonfile.py --diff
#修正前
a=1+2 

#修正後
a = 1 + 2
タイトルとURLをコピーしました