Python Forgiveness vs. Permission and Duck Typing
- by darkfeline
In Python, I often hear that it is better to "beg forgiveness" (exception catching) instead of "ask permission" (type/condition checking). In regards to enforcing duck typing in Python, is this
try:
x = foo.bar
except AttributeError:
pass
else:
do(x)
better or worse than
if hasattr(foo, "bar"):
do(foo.bar)
else:
pass
in terms of performance, readability, "pythonic", or some other important factor?