# -*- coding: UTF-8 -*-import timedef foo():? ?print 'in foo()'# 定義一個計時器,傳入一個,并返回另一個附加了計時功能的方法def timeit(func):? ?# 定義一個內嵌的包裝函數,給傳入的函數加上計時功能的包裝? ?def wrapper():? ? ? ?start = time.clock()? ? ? ?func()? ? ? ?end = time.clock()? ? ? ?print 'used:', end - start? ?# 將包裝后的函數返回? ?return wrapperfoo = timeit(foo)foo()foo()通過包裝函數,實現了對foo函數的計時功能,疑問1;通過包裝函數后,原來的foo()函數改變了嗎?疑問2:如果后來還要調用原來定義的foo()函數怎么辦?疑問3:同樣是實現計時功能,以下程序不是更方便?而且原foo()函數沒改變?def g(func):? ?start = time.clock()? ?func()? ?end = time.clock()? ?print 'used:', end - startg(foo)
python中關于裝飾器的疑問?
Quentin3824726
2017-03-25 12:06:10