1. TOP
  2. プログラム
  3. ソフト
  4. python
  5. Python-The Zen of Python-6

Python-The Zen of Python-6

2019-03-29_130216_RM3

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.

◎でも、今"すぐ"にやるよりはやらないほうがマシなことが多い。

コードを早い段階から最適化し過ぎると、時間のムダになることが多い。
例えばソートの実装が必要になった場合、クイックソートを最初から実装
する必要はないことが多い。
一般的にクイックソートはバブルソートより実装が難しい。 本当はバブルソートで十分な問題なのに最初からクイックソートで書い
てしまうと時間のムダになる。
テスト段階ではとりあえずバブルソートを使っておいて、必要になった
らクイックソートに書き換えるとよい。