以下为在学习装饰器时的一些代码:
# coding:utf-8
import time
import functools
def log_cost_time(func):
@functools.wraps(func)
def wrapped(*args,**kwargs):
begin = time.time()
try:
return func(*args,**kwargs)
finally:
print('func %s cost %s' % (func.__name__, time.time() - begin))
return wrapped
# complex_func = log_cost_time(complex_func)
@log_cost_time
def complex_func(num):
ret = 0
for i in range(num):
ret += i * i
return ret
if __name__ == '__main__':
print(complex_func(100000))
print(complex_func.__name__)
##################################################################
def log_cost_time(stream):
def inner_dec(func):
def wrapped(*args, **kwargs):
import time
begin = time.time()
try:
return func(*args, **kwargs)
finally:
stream.write('func %s cost %s \n' % (func.__name__, time.time() - begin))
return wrapped
return inner_dec
import sys
@log_cost_time(sys.stdout)
def complex_func(num):
ret = 0
for i in range(num):
ret += i * i
return ret
if __name__ == '__main__':
print(complex_func(100000))
###########################################################
# coding:utf-8
import time
import functools
import sys
def log_cost_time(stream):
def inner_dec(func): # 装饰器带参数
@functools.wraps(func)
def wrapped(*args,**kwargs):
begin = time.time()
try:
return func(*args,**kwargs)
finally:
stream.write('func %s cost %s\n'
% (func.__name__, time.time() - begin))
return wrapped
return inner_dec
# complex_func = log_cost_time(complex_func)(*args,**kwargs)
@log_cost_time(sys.stdout)
def complex_func(num):
ret = 0
for i in range(num):
ret += i * i
return ret
if __name__ == '__main__':