まめりうむ

WindowsからMacへ乗り換るためのネタをまとめたり好きなことをまとめたり。

*

[Python]try~finally文中でreturn文を使ったときの動作

   

スポンサーリンク

Pythonドキュメントの日本語訳を読んでて気付いたんですが

return によって、 finally 節をともなう try 文の外に処理が引き渡されると、実際に関数から抜ける前に finally 節が実行されます。

finally節 → return文なんですね。

せっかくなので動作確認してみると

def divide_int(dividend, divisor):
	try:
		quotient = dividend / divisor
		print '{0} / {1} = {2}'.format(dividend, divisor, quotient)
		return True
	except Exception as e:
		print 'error: {0}'.format(e.message)
		return False
	finally:
		print 'finally clause'

>>> divide_int(2,1)
2 / 1 = 2
finally clause
True

>>> divide_int(2,0)
error: integer division or modulo by zero
finally clause
False
  1. try節(except節)
  2. finally節
  3. try節(except節)のreturn文

って流れで一旦try節(except節)から抜けた後でまたtry節(except節)に戻ってくるのがなんか違和感なんですが、finally節は必ず実行されるからreturn文で関数(メソッド)から抜ける前に実行されるんでしょうね。

よく考えればそうなんですけど、あまり気にしてませんでした…w

この流れはbreak文でも同じみたいです。

勉強になりました。

 - プログラミング

スポンサーリンク

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

  関連記事

JForexでスタンドアローンアプリを自作する

前回まではJForexs採用業者で提供されているチャートツールへの追加機能として …

リーダブルコードを読みました

ひょんなことからクオカード1,000円分が手に入ったので、前から読んでみたかった …

Pythonのlxmlモジュールをインストールする

Pythonの勉強のためにYahoo!の検索結果からタイトルとリンクを抽出するP …

Pythonスタートブックを読みました

Sublime Text3きっかけで、前からちょっと触ってみたいなと思ってたスク …

サーチエンジンの検索結果から欲しい情報だけ抽出するPythonスクリプト

引き続きPythonドキュメントの日本語訳を読んでます。 チュートリアルを読み終 …

JForexで注文画面を自作する(新規注文に有効期限を設定)

前回作成した指値・逆指値注文画面のときにまとめて作ってしまえば良かったんですが忘 …

Pythonでニコ生アラートを作る(放送通知サーバへの接続情報を使ってsocket接続)

前回の続きです。 今回は、前回得られた放送通知サーバへの接続情報を使ってsock …

JForexで約定履歴画面を自作する

MT4もそうなんですけど、JForexも多くの国内業者に比べて約定履歴が見にくい …

Pythonでニコ生アラートを作る(放送通知サーバをクラス化する)

前回までのスクリプトでニコ生の放送通知を受け取ることが出来たので、今回はもう少し …

JForexで注文画面を自作する(ブレイクアウト注文)

前回まででカンタンですが結構使い勝手の良い指値・逆指値注文まで出来ました。 今回 …