この記事では、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