問題編:その理解は確かか

さらに、その理解を深めるために、次のテストケースを試してみましょう。

>>> 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 だけ成功して、他は失敗するのでしょうか。先を読み進む前に、ここでその理由を考えてみるのも一興です。


Previous〈3/5〉Next