問題編:その理解は確かか
さらに、その理解を深めるために、次のテストケースを試してみましょう。
>>> reduce(None, "A") # ex1'A'
ex1 では、第2引数が、そのままリターン値として得られます。
>>> reduce(None, "") # ex2
Traceback (most recent call last):
File "", line 1, in
reduce(None, "")
TypeError: reduce() of empty sequence with no initial value
ex2 では、例外 TypeError が発生して、エラーメッセージを出力します。
>>> reduce(None, "AB") # ex3
Traceback (most recent call last):
File "", line 1, in
reduce(None,"AB")
TypeError: 'NoneType' object is not callable
ex3 でも、例外 TypeError が発生して、エラーメッセージを出力します。
ex1/ex2/ex3 の違いは、第2引数だけです。なぜ ex1 だけ成功して、他は失敗するのでしょうか。先を読み進む前に、ここでその理由を考えてみるのも一興です。