Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 5, 2013 22:28:24

Zverushko
Зарегистрирован: 2013-04-22
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

Декораторы

Доброго времени суток!
Есть код:

import time
def timer(f):
    def tmp(*args,**kwargs):
        t=time.time()
        res=f(*args,**kwargs)
        print ('Время выполнения функции: %f' % (time.time()-t))
        return res
    return tmp
@timer
def func(x):
    return x**x
print(func(20000))

Он работает, Время выполнения функции: 0.005003
Но в упор не понимаю почему 20000 передается в tmp
Прошу подсказать, спасибо.

Офлайн

#2 Авг. 6, 2013 06:05:42

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Декораторы

1. func=timer(func)# из определения декоратора
2. timer(func) возвращает tmp, следовательно
3. func=tmp
4. func(20000) === tmp(20000)



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version