Python : コーディング規約をチェックしてみよう

TwitterFacebookHatena
  • 公開:2021-8-16
  • 更新:2023-10-26
  • 文章量:1605
  • Python

TL;DR

Python を洗練していくためにPEP という拡張提案の仕組みがあります。この中に、コードを綺麗に書くためのPEP 8という Python のコーディング規約があります。

今回は、Python のコーディング規約である PEP8 について、使用頻度が高く初心者の方が特に抑えておくべきルールをチェックしてみましょう。

コーディング規約

PEP8 は標準ライブラリのコーディング規約であり、多くの Python のプロジェクトが PEP 8 に沿って書かれています。PEP 8 によると、コードは書かれるより読まれることが多く、可読性を高める必要があるので、一貫性を重視するとのことです。

これらのことから、コーディングする時は、PEP8 の規約から外れないように理解する必要があります。

PEP 8 原文

PEP 8 日本語訳

コーディング規約に従って書くと、可読性が高くなります。

# インデント幅は4つ

class Menu:
    def info(self):
        print(self.name)

x = Menu()
x.name = 'hello'
x.info()

# ネスト

n = [1,2,3,4,5]
for hoge in n:
    print(hoge)
    if hoge == 3:
        break

# 開き括弧に揃える
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)

# list
my_list = [
    1, 2, 3,
    4, 5, 6,
    ]

規約の中で、気になった箇所をざっくりとまとめます。

  • スペースが好ましい(タブよりスペース推奨)
  • インデントにタブをスペースを混ぜてはいけない
  • インデントはスペース 4 つ(エディタのインデント幅も 4 に変更しましょう)
  • 演算子の前後はスペース 1 つ
  • 括弧やブラケットの前後に空白を入れない(foo(a[1], {b: 2}))
  • 行の長さは最大 79 文字(こちらもエディタで設定可能ですので変更しましょう)
  • コメントや docstring については 72 文字で折り返す
  • import 文は行を分ける(from ... import は同じ行に書いて OK)
  • 行末に余計な空白文字を残さない
  • 折り返された要素を縦に揃える
  • インラインコメントは控えめに
  • switch 文はない

命名規則

  • 実装よりも使い方を反映した名前にすべき
  • I、O は使わない。数字と区別がつかないから
  • モジュールの名前は小文字にする
  • クラス名は CapWords 方式(AbcDefg)
  • 型変数の名前は、最初が大文字で短く(Num)
  • 関数の名前は小文字のみ
  • インスタンスメソッドのはじめの引数の名前は self
  • クラスメソッドのはじめの引数の名前は cls
  • 変数は小文字、定数は大文字

自動コードレビュー

Python の文法チェックツールである flake 8 を活用しましょう。

インストール

pip install flake8

使い方は、ファイル名を指定するだけです。

※ 2023/02/02 コメントにてご指摘がありましたので、修正いたしました。

// fleak8 test.py 間違い
flake8 test.py

flake8

Python : コーディング規約をチェックしてみよう