Python で関数から複数の戻り値を返す

Manav Narula 2023年10月10日
  1. Python で関数から複数の戻り値を返すためにタプルを使用する
  2. Python で関数から複数の戻り値を返すためにリストを使用する
  3. Python で関数から複数の戻り値を返すために辞書を使用する
  4. Python で関数から複数の戻り値を返すクラスを使用する
  5. Python で関数から複数の戻り値を返すために dataclass を使用する
Python で関数から複数の戻り値を返す

関数はどんなプログラミング言語にも欠かせないものです。関数とは、プログラミングにおいて特定の操作を実行するために呼び出すことができるコードのブロックです。通常、関数は値を返すために使用されます。この値は、数値、文字列、またはその他のデータ型のいずれかになります。

このチュートリアルでは、複数の戻り値を返す関数を作成するためのさまざまな方法について説明します。これを実現するために、ユーザー定義の関数からリスト、辞書、およびその他のオブジェクトのような異なるデータオブジェクトを返します。

Python で関数から複数の戻り値を返すためにタプルを使用する

カンマで区切られた関数から値を返す場合、それらはタプルとみなされます。タプルは通常括弧で囲まれています。以下のコードでは、Python の関数からタプルを返します。

def return_multi(a):
    b = a + 1
    c = a + 2
    return b, c


x = return_multi(5)
print(x, type(x))

出力:

(6, 7) <class 'tuple'>

Python で関数から複数の戻り値を返すためにリストを使用する

Python のリストは、共通の名前の下に、特定の位置に異なるアイテムを格納するために使用されます。関数は、以下のようにリスト内の複数の戻り値を返すこともできます。

def return_multi(a):
    b = a + 1
    c = a + 2
    return [b, c]


x = return_multi(5)
print(x, type(x))

出力:

[6, 7] <class 'list'>

Python で関数から複数の戻り値を返すために辞書を使用する

辞書は Python でキーと値のペアを格納するために使用されます。異なる値に割り当てられたキーを持つ関数から辞書を返すことで、より整理された形式で最終的な出力を得ることができます。次の例を見てください。

def return_multi(a):
    b = a + 1
    c = a + 2
    return {"b": b, "c": c}


x = return_multi(5)
print(x, type(x))

出力:

{'b': 6, 'c': 7} <class 'dict'>

Python で関数から複数の戻り値を返すクラスを使用する

クラスは、異なるデータメンバと関数を含み、これらのメンバにアクセスするためのオブジェクトを作成することができます。クラス構造とそのデータメンバに基づいて、そのようなユーザ定義クラスのオブジェクトを返すことができます。例えば、以下のようになります。

class return_values:
    def __init__(self, a, b):
        self.a = a
        self.b = b


def return_multi(a):
    b = a + 1
    c = a + 2
    t = return_values(b, c)
    return t


x = return_multi(5)
print(x.a, x.b, type(x))

出力:

6 7 <class '__main__.return_values'>

Python で関数から複数の戻り値を返すために dataclass を使用する

dataclass は Python v3.7 以降で追加された新しい興味深い機能です。伝統的なクラスに似ていますが、主にデータを保存するために使われ、基本的な機能はすべて実装されています。このようなオブジェクトを作成するには、@dataclass デコレータと dataclass モジュールが使われます。以下のコードでは、関数から dataclass を返します。

from dataclasses import dataclass


@dataclass
class return_values:
    a: int
    b: int


def return_multi(a):
    b = a + 1
    c = a + 2
    t = return_values(b, c)
    return t


x = return_multi(5)
print(x.a, x.b, type(x))

出力:

6 7 <class '__main__.return_values'>
著者: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

関連記事 - Python Function