装饰器”(Decorator)能增强now()函数的功能,比如,在函数调用前后自动打印日志,但又不希望修改now()函数的定义,这种在代码运行期间动态增加功能的方式,称之为。
本质上,decorator就是一个返回函数的高阶函数。所以,我们要定义一个能打印购物的decorator,可以定义如下:
def wrapper(func):
def inner():
print('闭包函数')
func()
return inner
@wrapper#添加装饰器ojncar()
def jojncar():
print('加入购物车')
@wrapper
def cost():#添加装饰器cost()
print('付款')
if __name__=='__main__':
cost()
jojncar()
**output**
购物
付款
购物
加入购物车
工厂函数示例如下:
'''创建一工厂函数'''
import time
def create(choose):
'''
:param choose: #选择元素
:return: #返回装饰器对象
'''
def warpper(func):
def inner():
if choose=='第一种':
print('1登陆验证',time.ctime(1))
elif choose=='第二种':
print('2登陆验证',time.asctime())
else:
print('登陆失败')
func()
return inner
return warpper
@create('第二种')
def cost():
print('总付款金额')
if __name__=='__main__':
cost()
@create('第一种')
def cost1():
print('总付款金额')
if __name__=='__main__':
cost1()
**output**
2登陆验证 Tue Apr 9 20:56:30 2019
总付款金额
1登陆验证 Thu Jan 1 08:00:01 1970
总付款金额