Pythonで複数値を返す:シンプルなガイド
Pythonでは一度に複数の値を返せます。显然、Pythonのほとんどの関数は単一の値(通常その関数が行った作業の結果)を返します。この記事では、Pythonで複数値を返せること、そしてそのために辞書、リスト、データクラスは不要であることを学びます。
タプルで複数値を返す
することは、return文の後に値をカンマ区切りで並べるだけです。複数値を返し、一度に複数変数へ代入する例:
def get_user(id):
# データベースからユーザーを取得
# ....
return name, birthdate
name, birthdate = get_user(4)
実際にやっているのはタプルを返すことです。return (name, birthdate)と書いても同じ効果です。2つ以上の値をこの方法で返せるか? はい、返せます!
Pythonでタプルを使って複数値を返す最大の利点は、結果を直接複数変数にアンパック代入できることです。Pythonらしく、超クリーンで簡潔です。
Pythonで複数値を返す代替方法
タプルでの複数値返却は、値の数が限られている場合に適しています。明確に名付けられた変数に直接アンパックできるため、実際には非常に読みやすく簡潔なコードになります。
しかし、2〜3個を超える値になったら、コードをクリーンかつ読みやすく保つためにデータクラスを検討すべきです。データクラスは本質的に通常クラスに@dataclassアノテーションを付け、便利な追加機能を与えたものです。
データクラスが使えない場合(古いPythonバージョン等)、以下も検討できます:
- Python辞書
- Pythonリスト
- 通常クラス(オブジェクト)
何がベストかは、返すデータの種類によります。データがリストに綺麗に収まるならリストを使う。キーと値があるなら辞書。データがより複雑なら、辞書の中に複数リストを入れる必要があるかもしれません。ただ、ある時点からは(データ)クラスを使うのが最もクリーンになることを覚えておいてください。
学びを続ける
- PythonタプルとPython辞書について学ぶ
- 関数入門記事
- Python関数ディープダイブでより高度な関数トリックを学ぶ
Python
- Python データ型マスター: 実践ガイド
- Python 演算子完全マスター: 包括的ガイド
- Python pass文完全マスター: 実践ガイド
- Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
- Python辞書完全ガイド:作成、操作、高度なテクニック
- Pythonイテレータ完全ガイド:仕組みと自作方法
- Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
- Python datetimeマスター:日付・時刻・タイムゾーン実践ガイド
- Pythonのtime.sleep()をマスター:ベストプラクティス、マルチスレッド、実例
- Python yieldをマスター:ジェネレータvs return – 実践ガイド
- Python 概要:高水準、読みやすい、インタラクティブ、オブジェクト指向