コンテンツ

Pythonインタラクティブガイド - ステップ3 関数 (2) - 関数の基本 (2)

シリーズ - Pythonインタラクティブガイド
Info
  • 本講座「Pythonインタラクティブガイド」は、手を動かしながらPythonプログラミングの基礎を学べるインタラクティブな講座です。
  • 「スタイルガイド」では、Pythonで読みやすくきれいなコードを書くためのガイドライン(PEP8)を主に紹介しています。
  • 各コード例はその場で実行して結果を確認できます。
    ページ再読み込みで元に戻るので、自由に試してみてください。

「ステップ3 関数」の続きです。

関数に値を渡すために使用するのがパラメータ引数です。

  • パラメータ(parameter): 関数を定義するときに指定する変数
  • 引数(argument): 関数を呼び出すときに渡す実際の値
関数の定義 (パラメータ付き)
def 関数名(パラメータ1, パラメータ2, ...): 関数の処理 return 戻り値
関数の呼び出し (パラメータ付き)
関数名(引数1, 引数2, ...)
📚練習問題

前回の練習問題で作成した関数を、リストをパラメータで受けて最小値と最大値を返す関数に改修しましょう。

解答例

関数を呼び出すには、すべてのパラメータに対する引数を指定する必要があります:

必要な引数の指定が足りていない場合、TypeErrorが発生します:

引数を余分に指定している場合も TypeError が発生します:

引数は、関数の呼び出し時に <パラメータ>=<引数> という形で指定することも可能です:

関数の呼び出し (キーワード引数)
関数名(パラメータ=引数, ...)
  • このように指定する引数のことを、 キーワード引数 (keyword argument) といいます
  • 逆に通常の引数のことを、 位置引数 (positional argument) といいます

キーワード引数の場合、指定順序を変更可能です:

位置引数とキーワード引数を混在することも可能です
ただし、キーワード引数は位置引数より後ろで指定する必要があります

関数の呼び出し (位置引数とキーワード引数)
関数名(引数1, 引数2, パラメータ3=引数3, ...)

関数の定義時<パラメータ>=<引数> のように指定して、パラメータのデフォルト引数を設定できます。
デフォルト引数の設定があるパラメータは、関数呼び出し時に引数の指定を省略することができます。

関数の定義 (デフォルト引数)
def 関数名(パラメータ=デフォルト引数, ...): 関数の処理 return 戻り値

デフォルト引数の設定があるパラメータの後にデフォルト引数なしのパラメータを使用することはできません
そのため、パラメータのデフォルト引数を設定する場合は、
後続のすべてのパラメータのデフォルト引数も設定するか、パラメータの順序を変更する必要があります。

ミュータブルなオブジェクトをデフォルト引数として使用する場合に注意!

次のプログラムの出力を予想してから実行してみましょう:

実行結果は、 1を追加: [1], 2を追加: [2] ではなく、1を追加: [1], 2を追加: [1, 2] となります。

このような動作をするのは、デフォルト引数は関数定義時に作成されて、以降同じオブジェクトが使用されるためです:

このような意図しない動作を防ぎ、デフォルト値としてミュータブルな値を使用したい場合は、
デフォルト引数をNoneに設定して、Noneの場合にその値に変換する処理を関数内に追加しましょう:

📚練習問題

2つの集合を入力して、その和集合のサイズを返す関数を作成しましょう。
ただし、2つ目の集合は省略可能で、省略された場合は1つ目の集合のサイズを返すようにします。
また、実際に使用して正しく動作するか検証してみましょう。

解答例

関数の定義の直後に、三重引用符(""")で囲まれた文字列を記述することで、関数の説明を記述できます。
この文字列のことを docstring (ドクストリング, ドキュメント文字列)といいます。

docstring (ドキュメント文字列)
def 関数名(): """ 関数の説明(docstring)をここに記載する """ 関数の処理 return 戻り値
  • docstringを書くと、以下のようなメリットがあります:
    • 関数の使い方を明示できる
    • VSCode等のエディタのマウスオーバー表示で説明が見えるようになる
    • 自動ドキュメント生成ツール(Sphinxなど)で関数のドキュメントを自動生成できる
docstringのスタイル

Pythonでは、docstringの書き方にいくつかのスタイルがあります。以下に代表的な3つを紹介します。

シンプルで読みやすく、Googleが推奨するフォーマットです。

科学計算系のライブラリでよく使われるフォーマットです。

Sphinxなどのドキュメント生成ツールと相性の良いスタイルです。

どのスタイルでも問題ありませんが、チームやプロジェクトで統一することが重要です。
最初はGoogleスタイルから始めると良いでしょう。

docstringに関する詳しい解説は以下を参照してください:

📚練習問題

前回の練習問題で作成した関数のdocstringを作成しましょう。
上記の3つのスタイルのうちいずれかを使用してください。

解答例

関連記事