root@benchmarks:~# tail -n +1 *.py ==> afnp_exist.py <== import timeit def lookup(d, k): try: return d[k] except KeyError: pass setup = """ from __main__ import lookup d = {'a': 1} k = 'a' """ N = 100000000 print(timeit.timeit("lookup(d, k)", setup=setup, number=N)) ==> afnp_no_exist.py <== import timeit def lookup(d, k): try: return d[k] except KeyError: pass setup = """ from __main__ import lookup d = {'a': 1} k = 'b' """ N = 100000000 print(timeit.timeit("lookup(d, k)", setup=setup, number=N)) ==> lbyl_exist.py <== import timeit def lookup(d, k): if k in d: return d[k] setup = """ from __main__ import lookup d = {'a': 1} k = 'a' """ N = 100000000 print(timeit.timeit("lookup(d, k)", setup=setup, number=N)) ==> lbyl_no_exist.py <== import timeit def lookup(d, k): if k in d: return d[k] setup = """ from __main__ import lookup d = {'a': 1} k = 'b' """ N = 100000000 print(timeit.timeit("lookup(d, k)", setup=setup, number=N))