Найти - Пользователи
Полная версия: Namespace декоратора
Начало » Центр помощи » Namespace декоратора
1
JayIvhen
Голова сейчас лопнет.
Нижеприведенный код работает.
Реализует сохранение значения функции между вызовами.

В общем вопрос по декораторам.
По логике функций словарь должен появляться и умирать при каждом вызове, но это не так.
Заметил что при старте скрипта отработает тело function_cachier если далее по тексту он объявлен декоратором. И словарь успешно сохраняет значения между вызовами.
НО ни в каком namespace я его найти не могу dir()/dir(f2)/dir(function_cachier)

Так вот вопрос. Где хранится содержимое декоратора и какова логика его работы(он загружается куда-то после старта и весит там как живой неймспейс)?

Помогите! Гугл отверг меня, психическое здоровье под угрозой!

 def function_cachier(func, *a):
    cashe = dict()
    def wraped(n):
        if n in cashe:
            return cashe[n]
        res = func(n)
        cashe[n] = res
        return res
    return wraped
def f1(n):
    print 'f1 called'
    return n*n
@function_cachier
def f2(n):
    print 'f2 called'
    return n*n*n
f2(2)
print dir()
Papa_Svin
JayIvhen
Вам надо почитать про замыкания
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB