Pythonの関数では、return
文を使用すると、その時点で関数の実行が終了し、制御が呼び出し元に戻ります。しかし、return
文の後に処理を続ける方法があります。それはtry/finally
ブロックとyield
を使用する方法です。
try/finallyを使用する方法
try/finally
ブロックを使用すると、return
文が実行された後でもfinally
ブロック内のコードが実行されます。以下に例を示します。
def fun(x):
try:
return x * 20
finally:
print("Yay! I still got executed, even though my function has already returned!")
print(fun(5))
このコードを実行すると、まずx * 20
が返され、その後でfinally
ブロック内のprint
文が実行されます。
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)
if __name__ =='__main__':
with open('all_nodes.txt','r') as input_data:
for node_list, count_output in node_cut(input_data):
some_process(node_list)
このコードを実行すると、node_cut
関数はNODE_LENGTH
以上の行が読み込まれるたびにnode_list
とcount_output
を返し、その後で処理を続けます。
これらの方法を使用することで、Pythonの関数でreturn
文の後に処理を続けることが可能になります。ただし、これらの方法が適切かどうかは、具体的な要件や状況によります。適切な方法を選択し、コードを効率的に実装しましょう。