何かを書き留める何か

数学や読んだ本について書く何かです。最近は社会人として生き残りの術を学ぶ日々です。

『Effective Python』Item 13: try/except/else/finallyブロックを活用しよう

『Effective Python』の続き。for/elseとtry/except/else/finallyelse`の扱いの違いとは www.effectivepython.com

タイトル通り、try/except/else/finallyをフル活用しようぜ、という話。 try/finallyは確実に終了処理をしたい場合に役に立つ、という話ですがそれってwithの仕事では…と思ったがそういうケースはItem 43でカバーしている模様。 try/except/elseは送出する例外処理を制御する場合に役に立つ…まだ私には理解できていない…。

for/elseelseとtry/except/else/finallyelseは役割としては似ているが、前者は冷遇され後者は厚遇されている。 まあ、for/elsewhile/elseelse`は無くても困らないけどね…。

これで第一章(の訳出)が終わった。翻訳を合法的に公開してみたいのだが、何か上手い方法はあるのだろうか…。

『Effective Python』Item 14: Noneを返すよりも例外を発生させよう

『Effective Python』の続き。第二章突入。 www.effectivepython.com

第二章は函数の扱い方。返り値にNoneというのはやったことがないが、結構使われているのだろうか。

何が問題なのかは次のコードで一発だと思う。

def divide(a, b):
    try:
        return a / b
    except ZeroDivisionError:
        return None

x, y = 1, 0
result = divide(x, y)
if result is None:
    print('Invalid inputs')
else:
    print('Result is %.1f' % result)

x, y = 0, 5
result = divide(x, y)
if not result:
    print('Invalid inputs')
else:
    print('Result is %.1f' % result)

この問題点の対策として例外送出を紹介している。

次の項目はちょっと長いから時間が掛かりそう…。