pycodestyleを使用してPEP8に準拠しよう

スポンサーリンク

はじめに

PEP8とは、Pythonコミュニティにて採用されている公式のスタイルガイドです。Pythonコードを記述するうえでの一般的な規約やベストプラクティスをまとめたものとなっています。

PEP8のスタイルガイドに準拠すると以下のような利点があります。

  • 一貫したスタイル:コードが同じスタイルで記述されるため可読性の高いコードとなる
  • 視覚的な整理:インデント・行の長さが統一され処理の流れがわかりやすくなる
  • 変更の容易さ:構造が明確となり変更時の影響範囲が特定しやすくなる
  • 共通ルール:チーム開発において一定のルールを設けることで開発効率を向上させる
  • レビュー効率化:ルールを共通化することで本来議論すべき事項に集中できる
  • 自動化の恩恵:フォーマッターを活用することで自動で品質を担保できる

今回は、pycodestyleを用いてPEP8へ準拠することで可読性・保守性を向上させるのが目的です。

導入・実行

Pythonのインストールされた環境にてpipを用いることで簡単に導入ができます。

pip install pycodestyle

また、pycodestyleを実行する場合にはファイル名を指定して実行します。

pycodestyle ${チェックしたいファイル名}

実行例

PEP8の違反発見例

今回は意図的にPEP8規約に違反するコードを作成しました。

import os, sys


def test_pep8_check():
  print("インデントが不揃い")
    print("1行が79文字越え_________________________________________________________")
    test1=3
    test2 = [1,2,3]
    test3 = {"test":1}
        # コメントインデント

if __name__ == "__main__":
    test_pep8_check()

pycodestyleを実行した結果です。

> pycodestyle .\test.py
.\test.py:1:10: E401 multiple imports on one line
.\test.py:5:3: E111 indentation is not a multiple of 4
.\test.py:6:5: E113 unexpected indentation
.\test.py:7:10: E225 missing whitespace around operator
.\test.py:8:15: E231 missing whitespace after ','
.\test.py:8:17: E231 missing whitespace after ','
.\test.py:9:20: E231 missing whitespace after ':'
.\test.py:10:9: E116 unexpected indentation (comment)
.\test.py:12:1: E305 expected 2 blank lines after class or function definition, found 1
.\test.py:13:22: W292 no newline at end of file

PEP8規約に違反している個所を行列番号とともに記載されます。順番に読み解きながらコードを修正します。各エラーについては公式サイトもありますので確認してみてください。

pycodestyle’s documentation — pycodestyle 2.11.1 documentation

修正例

上記コードをPEP8規約違反とならないように修正してみました。

import os
import sys


def test_pep8_check():
    print("インデントが不揃い")
    print("1行が79文字越え")
    test1 = 3
    test2 = [1, 2, 3]
    test3 = {"test": 1}
    # コメントインデント


if __name__ == "__main__":
    test_pep8_check()

洗練されたコードに変貌しました。PEP8を用いることで、チーム開発などを行った際にも規約に基づいて記載されるため可読性が向上することは間違いなしです。

ぜひ、Pythonでの開発を行う際にはPEP8を開発の規約としてみてはいかがでしょうか!

コメント

タイトルとURLをコピーしました