Python-The Zen of Python-6

15:Now is better than never
◎ずっとやらないでいるよりは、今やれ。
never
f = open('stay_open.txt', 'w') f.write('every even number > 2 is the sum of two primes') raise AssertionError('this sentence is false') f.close()
now
with open('will_be_closed.txt', 'w') as f: f.write('the sum of two primes > 2 is an even number') raise AssertionError('this sentence is false')
neverのコードの何が悪いかお気づきだろうか。
neverのコードではファイルへの接続が閉じられないままassertされてしまう。
「後でcloseするから」という考え方がよくないコードを生んでしまうのだ。
しかしnowのコードならエラーが発生してもちゃんとファイルへの接続を
閉じてくれる。
neverのコードは以下のように書き換えることもできる。
try: f = open('will_be_closed.txt', 'w') f.write('every even number > 2 is the sum of two primes') assert not 'this sentence is false' finally: f.close()
16:Although never is often better than right now.
◎でも、今"すぐ"にやるよりはやらないほうがマシなことが多い。
コードを早い段階から最適化し過ぎると、時間のムダになることが多い。
例えばソートの実装が必要になった場合、クイックソートを最初から実装
する必要はないことが多い。
一般的にクイックソートはバブルソートより実装が難しい。
本当はバブルソートで十分な問題なのに最初からクイックソートで書い
てしまうと時間のムダになる。
テスト段階ではとりあえずバブルソートを使っておいて、必要になった
らクイックソートに書き換えるとよい。