Pythonで関数のドキュメントを書く(docstring)
この記事では、Pythonにおける関数のdocstringの書き方、役割、そしてベストプラクティスについて説明します。効果的なdocstringの作成を通して、コードの可読性と保守性を向上させる方法を学びます。
目次
docstringとは?
docstringは、関数、クラス、モジュールなどのコード要素の説明を記述するための文字列リテラルです。Pythonインタープリタはdocstringを特別なメタデータとして扱い、`help()`関数や`__doc__`属性を通してアクセスできます。docstringはコードの可読性を高め、保守性を向上させるために非常に重要です。
def my_function(arg1, arg2):
"""この関数は2つの引数を足し合わせて返します。\n\nArgs:\n arg1: 最初の数値。\n arg2: 2番目の数値。\n\nReturns:\n 2つの引数の和。"""
return arg1 + arg2
print(help(my_function))
上記の例では、`my_function`関数のdocstringに、関数の機能、引数、戻り値について説明しています。`help()`関数は、このdocstringを表示します。
docstringの書き方
docstringは三重引用符("""...""")で囲みます。最初の行は簡潔な要約を記述し、空行を空けてから詳細な説明を記述します。引数、戻り値、例外などの情報を明確に記述することが重要です。
def calculate_average(numbers):
"""与えられた数値リストの平均を計算します。\n\nArgs:\n numbers: 数値のリスト。\n\nReturns:\n 数値リストの平均。\n リストが空の場合は0を返します。\n\nRaises:\n TypeError: 入力リストに数値以外の要素が含まれている場合。"""
if not numbers:
return 0
if not all(isinstance(num, (int, float)) for num in numbers):
raise TypeError('入力リストには数値のみを含めることができます。')
return sum(numbers) / len(numbers)
この例では、関数の機能、引数、戻り値、例外処理について詳細に記述しています。
docstringのスタイルガイド
docstringの記述には、いくつかのスタイルガイドが推奨されています。NumPyスタイルガイドやGoogleスタイルガイドなどが有名です。これらのスタイルガイドに従うことで、docstringの一貫性と可読性を高めることができます。
- 最初の行は簡潔な要約にする
- 空行で要約と詳細を分ける
- 引数、戻り値、例外を明確に記述する
- ReSTやGoogleスタイルガイドのフォーマットを使用する
docstringの例
様々な状況におけるdocstringの例を示します。
# 関数のdocstring
def add(x, y):
"""2つの数値を加算する"""
return x + y
# クラスのdocstring
class MyClass:
"""これはMyClassクラスです"""
pass
# モジュールのdocstring
"""これは私のモジュールです"""
それぞれのdocstringは、そのコード要素の機能を簡潔に説明しています。
docstringとコードドキュメント生成ツール
Sphinxなどのコードドキュメント生成ツールは、docstringから自動的にドキュメントを生成できます。これにより、コードのドキュメント作成を効率化し、高品質なドキュメントを作成できます。
関連記事
- Pythonで関数を定義(def)
- Pythonで関数の引数にデフォルト値を設定
- Pythonで可変長引数を使う(*args, **kwargs)
- Pythonでデコレータ関数を使う
- Pythonで関数に型ヒントをつける (Python 3.5以降)
- Pythonで静的メソッド・クラスメソッドを使う(@staticmethod, @classmethod)
- Pythonで関数のドキュメントを書く(docstring)
- Pythonで関数の単体テストを書く(unittest, pytest)
- Pythonでラムダ式(無名関数)を使う(lambda)
- Pythonで高階関数を使う(map, filter, reduceなど)