【python3】戻り値を複数返す・受け取る

一つの関数から複数の戻り値を返したいぞーと言うときに。

def get_user_data():
  name = "どっかから取得したユーザー名"
  tel = "どっかから取得した電話番号"
  return name, tel

これだけで複数の戻り値を返す事ができます。受け取る時は

# 戻り値の数だけ変数を用意しておく方法
name, tel = get_user_data()

# タプルで受け取る方法
userdata = get_user_data()

のどちらかで受け取れます。

ただ、どちらの方法にもデメリットがあり、
上の場合、変数の数が一致しないとエラーになります。
下の場合、タプルで受け取ることになるので、今までuserdata[1]で電話番号がとれていたのに、ある日住所にすり替わってやがる!みたいなことが起きます。
いずれにせよ、複数の引数を返す側のメソッドの挙動が変わった時に予期せぬエラーの原因になるので、あんまり使わない方が良い気がする。

基本的には、複数の情報返したいときは独自クラス作るか、せめてオブジェクトで返してあげる方がよさそうです。
が、まあ、将来の保守より今ササッと出来る方が大事、ってときには。

この記事が気に入ったらサポートをしてみませんか?