Raymond Hettinger wrote:
The hasattr() tests can be expensive for repeated throwers and senders. Any merit to caching the result of the test?
The expansion is a specification of the semantics, not an implementation.
My current implementation does something like
_m = getattr(_i, 'throw', None) if _m: _m(_e)
and a further optimisation would be to cache the bound method.