Pythonでは、関数から値を返すためにreturn
文を使用します。しかし、return
文を実行した後にも処理を続行したい場合はどうすればよいでしょうか?この記事では、その方法について説明します。
return後の処理
Pythonでは、return
文が実行されると、その時点で関数の実行が終了し、制御が呼び出し元に戻ります。そのため、通常はreturn
文の後に書かれたコードは実行されません。
しかし、try/finally
ブロックを使用することで、return
文の後にも処理を続行することが可能です。
def fun(x):
try:
return x * 20
finally:
print("Yay! I still got executed, even though my function has already returned!")
print(fun(5))
上記のコードでは、finally
ブロック内のprint
文がreturn
文の後に実行されます。
yieldを使用する
また、yield
文を使用することで、関数の途中で値を返しつつ、その後の処理を続行することも可能です。
def node_cut(input_file):
NODE_LENGTH = 500
count_output = 0
node_list=[]
for line in input_file.readlines():
if len(node_list) >= NODE_LENGTH :
count_output += 1
yield( node_list,count_output )
node_list=[]
node,t=line.split(',')
node_list.append(node)
上記のコードでは、yield
文が実行されるたびに、node_list
とcount_output
の値が返され、その後の処理が続行されます。
まとめ
Pythonでは、return
文の後にも処理を続行するためには、try/finally
ブロックやyield
文を使用することができます。これらの機能を活用することで、より柔軟なプログラミングが可能になります。