0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

PEP 8 最速理解ガイド:これだけは押さえておきたい10のルール

Posted at

PEP 8 最速理解ガイド:これだけは押さえておきたい10のルール

はじめに

定年退職後の備忘録としてまとめたものです。

Pythonのコードを読みやすく、チーム開発で統一感を出すために不可欠なのが、**PEP 8(スタイルガイド)**です。すべてを覚える必要はありませんが、主要なルールを知っているだけで、あなたの書くコードは格段に美しくなります。本記事では、特に重要な10個のルールを、良い例と悪い例を比較しながら簡潔にまとめます。


1. インデントはスペース4つ

最も基本的なルールです。タブではなく、スペース4つでインデントします。

  • 悪い例

    def my_function():
    	print("Hello")
    
  • 良い例

    def my_function():
        print("Hello")
    

2. 1行の文字数は79文字以内

コードが横に長くなりすぎないようにします。読みやすさの確保が目的です。

  • 悪い例

    long_variable_name = "This is a very long string that goes on and on and on and on and on and on and on and on..."
    
  • 良い例

    long_variable_name = (
        "This is a very long string that goes on and on and on and on and on and on and on and on..."
    )
    

3. 空行で区切る

関数やクラスの定義の間に空行を入れることで、コードのセクションを明確にします。

  • 悪い例

    def func1():
        pass
    def func2():
        pass
    
  • 良い例

    def func1():
        pass
    
    
    def func2():
        pass
    

4. 演算子の周りには空白を

=, +, -などの演算子の両側にスペースを1つ入れます。

  • 悪い例

    x=1+2*3
    
  • 良い例

    x = 1 + 2 * 3
    

5. 命名規則を守る

  • 関数、変数: snake_case (すべて小文字、単語間をアンダースコアで繋ぐ)

  • クラス: CamelCase (各単語の先頭を大文字にする)

  • 定数: UPPER_CASE_SNAKE_CASE (すべて大文字、単語間をアンダースコアで繋ぐ)

  • 悪い例

    MyVariable = 10
    def myfunction():
        pass
    
  • 良い例

    my_variable = 10
    def my_function():
        pass
    
    class MyClass:
        pass
    
    MY_CONSTANT = 3.14
    

6. import文の順序

標準ライブラリサードパーティライブラリ自作モジュールの順に記述し、それぞれ空行で区切ります。

  • 悪い例

    import os
    import requests
    from my_project import utils
    
  • 良い例

    import os
    
    import requests
    
    from my_project import utils
    

7. 末尾のカンマ

リストや辞書の要素が複数行にわたる場合、最後の要素にもカンマを付けるのが推奨されます。バージョン管理システムで差分(diff)が見やすくなります。

  • 悪い例

    names = [
        "Alice",
        "Bob"
    ]
    
  • 良い例

    names = [
        "Alice",
        "Bob",
    ]
    

8. リスト・タプルのインデックスの周りは空白なし

  • 悪い例

    my_list [1]
    
  • 良い例

    my_list[1]
    

9. ドキュメンテーション文字列(Docstrings)

関数やクラスの説明は、三重引用符("""または''')で記述します。

  • 良い例
    def calculate_sum(a, b):
        """2つの数値を足し合わせる関数。"""
        return a + b
    

10. if __name__ == "__main__":

スクリプトが直接実行されたときのみ動くコードブロックを定義します。

  • 良い例
    def main():
        print("This is the main function.")
    
    if __name__ == "__main__":
        main()
    

PEP 257: Docstringの書き方

PEP 257は、ドキュメンテーション文字列(Docstring)のスタイルガイドです。PEP 8がコード全体のフォーマットを規定するのに対し、PEP 257はコードの説明文をどのように書くべきかを定めています。Docstringは、関数、クラス、モジュール、メソッドの直後に記述され、help()関数やドキュメント生成ツールによって読み込まれます。

  • 一行ドキュメンテーション文字列: 簡潔な説明で済む場合に使います。
    def get_user_name():
        """ユーザーの名前を返す。"""
        ...
    
  • 複数行ドキュメンテーション文字列: より詳細な説明が必要な場合に使います。一行目に要約、二行目以降に詳細を記述します。引数や戻り値も記述することが推奨されています。
    def calculate_area(radius):
        """
        円の面積を計算する。
    
        引数:
            radius (float): 円の半径。
    
        戻り値:
            float: 計算された円の面積。
        """
        return 3.14 * radius * radius
    

まとめ

PEP 8のルールをすべて暗記する必要はありません。
まずは「インデントはスペース4つ」「命名規則」「空白の入れ方」の3つから実践してみましょう。これらのルールは、Pythonコードをよりプロフェッショナルで、チームメンバーにとって読みやすいものに変えるための第一歩です。
flake8blackのような自動整形ツールを活用するのもおすすめです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?