由于本人编程比较菜,我自己手动把评论中作业的答案炒了一遍,这里学习到了在print()中用{0}{1}...和.format({1},{2})来进行输出的方法,理解了装饰器的作用就是在已有的函数中增加一些功能而已。
#!/usr/bin/env python3
# -*- coding: utf-8 -*-from functools import wraps
from time import time, sleep
start_time = time()
print('\n现在开始运行\n**************\n')
def log(text):
def decorator(func):
@wraps(func)
def wrapers(*arg, **kw):
print("函数{0}即将执行,次函数已经运行了{1}秒\n".format(func.__name__,time()-start_time))
starttime = time()
return (func(*arg, **kw),print('函数{0}执行{1}秒后,结束了自己\n'.format(func.__name__, time() - starttime)))[0]
return wrapers
return(decorator,print("我是一个带参数的装饰器,我的参数是'{}'".format(text)))[0] if text.__str__() == text else decorator(text)
@log
def abc():
print("我是函数'abc',我正在执行中,不过我要谁5秒\n")
sleep(5)
@log('嘿,伙计,是你吗?\n')
def efg():
print("我是函数efg(),我正在执行中,我只想睡 3 秒\n")
sleep(3)
abc()
efg()
print('运行结束')