Mais fácil implorar perdão do que pedir permissão

Muitos programadores de Python que conheci não percebem realmente que é mais fácil pedir perdão do que pedir permissão em Python.

def begForgiveness(d, x):
for k in x:
try:
v
= d[k]
except KeyError:
pass

def askPermission(d, x):
for k in x:
if k in d.keys():
pass
else:
pass

Se você fosse avaliar os dois códigos acima, descobrirá que begForgiveness () é executado mais rápido do que askPermission (), mesmo em uma contagem de iteração mais alta.

Isso ocorre porque, em tempo de execução, o Python assume que as chaves estão lá e, se não estiverem, uma exceção é levantada, que você detecta.

Embora pareça ser um tipo de abuso (e de fato é), isso deve aumentar o desempenho daqueles que escrevem códigos defensivamente. A verificação de tipo, por exemplo, agora é uma tentativa simples: exceto loop em vez de usar if type (..).

É melhor usado quando a exceção gerada é esperada.