dict.get (): argumento predeterminado evaluado incluso en caso de éxito

Por qué es el valor predeterminado endict.get(key[, default]) evaluado incluso si la clave está en el diccionario?

>>> key = 'foo'
>>> a={}
>>> b={key:'bar'}
>>> b.get(key, a[key])
Traceback (most recent call last):
  File "<pyshell#5>", line 1, in <module>
    b.get(key, a[key])
KeyError: 'foo'