ホームページ > バックエンド開発 > Python チュートリアル > Python 関数から複数の値を効果的に返すにはどうすればよいですか?

Python 関数から複数の値を効果的に返すにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-30 21:11:13
オリジナル
129 人が閲覧しました

How Can I Effectively Return Multiple Values from a Python Function?

Python 関数から複数の値を返す代替方法

概要

関数から複数の値を返すタスクは次のとおりです。さまざまなプログラミングのシナリオでよく発生します。 Python では、これを実現するために利用できるオプションがいくつかあります。この説明では、さまざまなアプローチとその相対的な利点と欠点について説明します。

タプルの使用

一般的な方法は、タプルを使用することです。次の例を考えてみましょう:

def f(x):
    y0 = x + 1
    y1 = x * 3
    y2 = y0 ** y3
    return (y0, y1, y2)
ログイン後にコピー

このアプローチは簡単ですが、返される値の数が増えると煩雑になる可能性があり、各要素の順序と意味を追跡することが困難になります。

辞書の使用

もう 1 つのオプションは、辞書を使用して戻り値を表すことです。例:

def g(x):
    y0 = x + 1
    y1 = x * 3
    y2 = y0 ** y3
    return {'y0': y0, 'y1': y1, 'y2': y2}
ログイン後にコピー

このアプローチでは名前付きキーが可能になり、特定の値への明確さとアクセスが容易になります。

クラスの使用

__slots__ 属性を使用すると、クラスは特定の属性にスペースを事前に割り当てることで、メモリ使用量をさらに最適化できます。例:

class ReturnValue(object):
    __slots__ = ["y0", "y1", "y2"]
    def __init__(self, y0, y1, y2):
        self.y0 = y0
        self.y1 = y1
        self.y2 = y2
ログイン後にコピー

データクラスの使用 (Python 3.7 )

データクラスは、明示的なコンストラクターや属性を必要とせずにデータを保持するクラスを定義する便利な方法です。宣言。これらは、自動化されたメソッド、型チェック、その他の利点を提供します。

@dataclass
class Returnvalue:
    y0: int
    y1: float
    y3: int
ログイン後にコピー

リストの使用

あまり一般的ではありませんが、リストを返すことも別の選択肢です。ただし、混合型の要素が存在する可能性があるため、理想的ではない可能性があります。

名前付きタプル (Python 2.6 )

名前付きタプルは、タプルと辞書の機能を組み合わせたものです。 、属性またはインデックスによってアクセスできる名前付き要素を提供します。これらは、特別なクラスを構築する必要なしに複数の値を返す場合に特に便利です。

import collections
Point = collections.namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p.x, p.y)  # Output: 1 2
ログイン後にコピー

最適なメソッド

最適なメソッドの選択は、特定のクラスによって異なります。状況の要件と好み。ただし、一般に、名前付きタプル は、複数の値を明確かつ簡潔に返すための多用途かつ効率的なオプションであると考えられています。これらは、柔軟性とタイプセーフティの間の強力なバランスを提供します。

以上がPython 関数から複数の値を効果的に返すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート