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
- try節(except節)
- finally節
- try節(except節)のreturn文
って流れで、いったんtry節(except節)から抜けた後でまたtry節(except節)に戻ってくるのがなんか違和感なんですが、finally節は必ず実行されるからreturn文で関数(メソッド)から抜ける前に実行されるんでしょうね。
よく考えればそうなんですけど、あまり気にしてませんでした…w
この流れはbreak文でも同じみたいです。
勉強になりました。
最近、私はPythonでFXトレードのバックテスト(シミュレーション)をやって、良い結果が出たものをMetaTrader4のEAで実装して自動売買してます。
MetaTrader4でもバックテストはできるんですが、慣れるとPythonの方が圧倒的に早いんですよね。PythonでバックテストしてからEAで実装する手間を考えても、開発効率が良いです。
この本では
- Pythonの環境構築
- バックテストの実例
- 機械学習による予測
- リアルタイムデータの取得
- 自動売買
まで網羅されていて、薄い本なので浅く広くという感は否めませんが、とっかかりの一冊としてはちょうど良いと思います。
コメント