Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonプログラムをきれいに構造化するためのベストプラクティス

このチュートリアルでは、Pythonプログラムを読みやすく構造化するためのベストプラクティスを紹介します。一つずつ見ていきましょう。

インデントにはタブを使う

コードのインデントにはタブを使用しましょう。関数やメソッドごとにスペースの数がバラバラになるよりも、コード全体の可読性が大きく向上します。多くのコードエディタでは、設定画面からタブに対応するスペースの数を自由に変更できます。

# 例
def sample(random):
    # ステートメント1
    # ステートメント2
    # ...
    return random

1行は79文字以内に収める

Pythonでは、1行を79文字を超えて書くことは推奨されていません(PEP 8でも同様のガイドラインが示されています)。行が長くなりそうな場合は、エスケープ文字(\)を使って複数行に分割しましょう。以下の例をご覧ください。

# 例
def evaluate(a, b, c, d):
    return (2 ** (a + b) / (c // d) ** d + a - d * b) \
        - (3 ** (a + b) / (c // d) ** d + a - d * b)

if文で複数の条件をチェックする場合も、どうしても79文字を超えてしまうことがあります。そのようなときは、次のいずれかの方法を使うとよいでしょう。

# 括弧で囲む方法
if (
    a + b > c + d and
    c + d > e + f and
    f + g > a + b
):
    print('Hello')

# バックスラッシュで改行する方法
if a + b > c + d and \
    c + d > e + f and \
    f + g > a + b:
    print('Hello')

docstring(ドキュメント文字列)を活用する

関数やクラスには必ずdocstringを記述しましょう。docstringは三重引用符(""" または ''')で囲んで書きます。コードの意図や使い方を後から参照できるようになり、チーム開発でも特に役立ちます。以下に例を示します。

def sample():
    """これは関数です"""
    """
    このように
    複数行のdocstringも
    記述できます
    """

class Sample:
    """これはクラスです"""
    """
    クラスにも
    同様にdocstringを
    記述できます
    """

まとめ

インデントの統一、行の長さの制限、docstringの活用という3つのポイントを押さえるだけで、Pythonコードの可読性と保守性は大きく向上します。このチュートリアルについて不明な点がある場合は、コメント欄でお気軽にお尋ねください。

  1. 【初心者向け】Pythonのissuperset()メソッドの使い方をわかりやすく解説

    はじめにこの記事では、Pythonのissuperset()メソッドについて、基本的な仕組みから実際のコード例まで詳しく解説します。issuperset()は、セット(集合)に対して使用できるメソッドで、引数として渡されたセットのすべての要素が、呼び出し元のセットに含まれているかどうかを判定します。呼び出し元のセットBが、引数のセットAのすべての要素を含んでいる場合 → True を返すセットAの要素がすべてBに含まれていない場合 → False を返すつまり、「BがAの上位集合(スーパーセット)であるかどうか」を判定するためのメソッドです。基本構文B.issuperset(A)この式は、Bが

  2. Pythonモジュールを構造化するためのルールとは?プロジェクト構成のベストプラクティス

    Pythonプロジェクトを整理された形で構築するには、定評のあるディレクトリ構造を採用するのが効果的です。ここでは、Kenneth Reitz氏が公開しているサンプルプロジェクト「samplemod」を例に、優れたプロジェクト構成の方法を紹介します。このプロジェクトは「sample」モジュールを作成するもので、ディレクトリ構造は以下のようになっています。README.rst LICENSE setup.py requirements.txt sample/__init__.py sample/core.py sample/helpers.py docs/conf.py docs/index.r