Запретить использование декоратора дважды в одной и той же функции в python

У меня есть декоратор:

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

И я хочу, чтобы он не украшал одну и ту же функцию дважды, например, такие вещи, как:

@d
@d
def f():
   print 2

Единственное возможное решение, о котором я мог подумать, - это использовать dict для хранения функций, которые декоратор уже декорировал, и вызывать исключение, если его попросили декорировать функцию, которая существует в dict. Скажите, если у вас есть идея получше ...

Ответы на вопрос(4)

Ваш ответ на вопрос