Impedir que o decorador seja usado duas vezes na mesma função em python

Eu tenho um decorador:

from functools import wraps
def d(f):
    @wraps(f)
    def wrapper(*args,**kwargs):
        print 'Calling func'
        return f(*args,**kwargs)
    return wrapper

E eu quero evitar que ele decore a mesma função duas vezes, por exemplo, evite coisas como:

@d
@d
def f():
   print 2

A única solução possível que pude pensar é usar um dict para armazenar as funções que o decorador já decorou e levantar uma exceção se for solicitado a decorar uma função que existe no dict. Diga se você tem uma ideia melhor ...

questionAnswers(4)

yourAnswerToTheQuestion