Python3の関数から一度に複数の値を返す方法

本日、medium.comで見つけ記事の翻訳をあなたと共有します著者のVivekCoderは、Pythonの関数から値を返す方法について説明し、さまざまなデータ構造を互いに区別する方法について説明しています。Unsplashの





Webサイトからの写真著者:Vipul Jha



Pythonは、関数から一度に複数の値を同時に返すことができるという点で便利です。これを行うには、演算子を使用して、returnいくつかの値を持つデータ構造を返す必要があります-たとえば、各週の総労働時間数のリスト。



def hours_to_write(happy_hours):
   week1 = happy_hours + 2
   week2 = happy_hours + 4
   week3 = happy_hours + 6
   return [week1, week2, week3]
 
print(hours_to_write(4))
# [6, 8, 10]


Pythonのデータ構造は、ステートメントによって返されるデータのコレクションを格納するために使用されreturnます。この記事では、同様の構造(辞書、リスト、タプル)を使用し、クラスとデータクラス(Python 3.7以降)を使用して、複数の値を返す方法について説明します。



方法1:辞書を使用して値を返す



辞書には、キーと値のペア(key:valueである要素の組み合わせが含まれ、中括弧({}で囲まれています



私の意見では、値にアクセスするための鍵を知っている場合は、辞書が仕事に最適なオプションです。以下は、キーが人の名前であり、対応する値が年齢である辞書です。



people={
  'Robin': 24,
  'Odin': 26,
  'David': 25
}


次に、キーと値のペアを持つ辞書を返す関数に移りましょう。



# A Python program to return multiple values using dictionary
# This function returns a dictionary 
def people_age(): 
    d = dict(); 
    d['Jack'] = 30
    d['Kim'] = 28
    d['Bob'] = 27
    return d
d = people_age() 
print(d)
# {'Bob': 27, 'Jack': 30, 'Kim': 28}


方法2:リストを使用して値を返す



リストは、角括弧を使用して形成された配列に似ていますが、さまざまなタイプの要素を含めることができます。リストは可変データタイプであるため、タプルとも異なります。つまり、どのリストも変更できます



リストは、均一である必要がないため(文字列、数値、要素を含めることができる)、Pythonで最も用途の広いデータ構造の1つです。リストは、スタックまたはキューと組み合わせて使用​​されることもあります。



# A Python program to return multiple values using list
 
def test(): 
    str1 = "Happy"
    str2 = "Coding"
    return [str1, str2];
 
list = test() 
print(list)
# ['Happy', 'Coding']


これは、自然な数のリストを返す例です。



def natural_numbers(numbers = []):
   
   for i in range(1, 16):
       numbers.append(i)
   return numbers
 
print(natural_numbers())
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]


方法3:タプルを使用して値を返す



タプルは、異種データのコレクションを格納するために一般的に使用されるPythonの順序付けられた不変オブジェクトです。



タプルはリストに似ていますが、宣言後に変更することはできません。また、原則として、タプルはリストよりも高速に動作します。アイテムをコンマで区切ることにより、タプルを作成できます:x, y, zまたは(x, y, z)



この例では、タプルを使用して、従業員に関するデータ(名前、年単位の作業経験、および会社名)を格納します。



Bob = ("Bob", 7, "Google")


そして、これはタプルを返す関数を書く例です。



# A Python program to return multiple values using tuple
# This function returns a tuple 
def fun(): 
    str1 = "Happy"
    str2 = "Coding"
    return str1, str2; # we could also write (str1, str2)
str1, str2= fun() 
print(str1) 
print(str2)
# Happy
  Coding


return(上記のように)タプルを返すには、各項目をコンマで区切るだけで十分なので 、ステートメントの括弧を省略していることに注意してください



括弧の代わりにコンマを使用してタプルを作成できることを忘れないでください。括弧は、空のタプルが使用されている場合、または構文の不正確さを回避する必要がある場合にのみ必要です。



タプルの理解を深めるには、公式のPython 3ドキュメントを参照してください(ドキュメントは英語-Ed。です)。



以下は、括弧を使用してタプルを返す関数の例です。



def student(name, class):
   return (name, class)
print(student("Brayan", 10))
# ('Brayan', 10)


繰り返しますが、タプルはリストと混同しやすいです(結局のところ、両方とも要素のコンテナです)。ただし、覚えておくべき基本的な違いがあります。タプルは変更できませんが、リストは変更できます。



方法4:オブジェクトを使用して値を返す



ここではすべてがC / C ++またはJavaと同じです。クラス(Cでは構造と呼ばれる)を作成するだけで、複数の特性を格納し、クラスのオブジェクトを返すことができます。



# A Python program to return multiple values using class 
class Intro: 
 def __init__(self): 
  self.str1 = "hello"
  self.str2 = "world"
# This function returns an object of Intro
def message(): 
 return Intro() 
 
x = message() 
print(x.str1) 
print(x.str2)
# hello
  world


方法5:データクラスを使用して値を返す(Python 3.7以降)



Python 3.7以降のデータクラスは、自動的に追加された一意のメソッド、モジュール、typingおよびその他の便利なツールを備えたクラスを返すのに役立ちます。



from dataclasses import dataclass
@dataclass
class Item_list:
    name: str
    perunit_cost: float
    quantity_available: int = 0
    def total_cost(self) -> float:
        return self.perunit_cost * self.quantity_available
    
book = Item_list("better programming.", 50, 2)
x = book.total_cost()
print(x)
print(book)
# 100
  Item_list(name='better programming.', perunit_cost=50, 
  quantity_available=2)


データクラスの理解を深めるには、公式のPython 3ドキュメントを参照してください(ドキュメントは英語-Ed。です)。



出力



この記事の目的は、Pythonの関数から複数の値を返す方法を理解することです。そして、ご覧のとおり、これらの方法は本当にたくさんあります。



材料を学び、常にプログラミングスキルを磨きましょう。清聴ありがとうございました!



All Articles