Pythonのreturnの解説、戻り値なしやif文,複数返す方法を解説

スポンサーリンク

この記事では、Pythonのreturn文について解説していきます。

まずは、概要から解説します・

  • Pythonのreturn文は、関数の中で、呼び出し元のプログラムに何かを返すために使われます。
  • return文は関数の中だけで使うことができます。
  • Pythonでは、すべての関数が何かを返します。もしreturn文がなければ、Noneを返します。
  • return文に式が含まれている場合は、まずその式が評価され、その後値が返されます。
  • return文は関数の実行を終了させます。
  • 関数は、複数のreturn文を持つことができます。そのいずれかが実行されると、その関数は終了します。
  • 関数は、複数の種類の値を返すことができます。
  • Pythonの関数は、1つのreturn文で複数の値を返すことができます。
スポンサーリンク

Python return文の例

2つの数字を足し算して、その合計を呼び出し元に返す簡単な例を見てみましょう。

def add(x, y):
    total = x + y
    return total

また、上記のコードは以下の様に書くこともできます。

def add(x, y):
    return x + y

return文で戻り値がなしの場合の挙動

return文で値を返さない場合、関数は None を返します。

>>> def return_none():
... return
...
>>> print(return_none())
None
>>>

if文を使ったreturn

if文を使ってreturnの挙動を変更したい場合は、以下の様に書きます。

def type_of_int(i):
    if i % 2 == 0:
        return 'even'
    else:
        return 'odd'

Python Functionは複数のタイプの値を返すことができる

PythonはC言語やC++と違い、pythonの関数は1つの値を返すだけでなく、複数の値を返すことができます

以下のコードは、関数が複数の型の値を返す例です。

def get_demo_data(object_type):
    if 'str' == object_type:
        return'test'
    elif 'tuple' == object_type:
        return(1 , 2 , 3)
    elif 'list' == object_type:
        return [ 1 , 2 , 3 ]
    elif 'dict' == object_type:
        return { "1": 1 , "2": 2 , "3": 3 }
    else:
        return None

1つのreturnステートメントで複数の値を返す

Pythonのreturn文は、複数の値を返すことができます。

これらの値はカンマで区切られ、タプルとして返されます

def return_multiple_values():
    return 1 , 2 , 3

print(return_multiple_values())

以下の様に出力されます。

(1 , 2 , 3)

try-exceptブロック内でreturn文を書いたとき

return文がtry-exceptブロックの中で実行された場合、呼び出し元に値を返す前にfinallyブロックのコードが最初に実行されます。

def hello():
    try:
        return 'hello try'
    finally:
        print('finally block')

def hello_new():
    try:
        raise TypeError
    except TypeError as te:
        return'hello except'
    finally:
        print('finally block')

print(hello())
print(hello_new())

結果は以下の様になります。

finally block
hello try
finally block
hello except

finallyブロックにreturn文がある場合、先のreturn文は無視され、finallyブロックの値が返されます。

def hello():
    try:
        return 'hello try'
    finally:
        print('finally block')
        return 'hello from finally'

print(hello())

結果は、以下の様になります。

finally block
hello from finally
タイトルとURLをコピーしました