装饰器”(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 innerreturn 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
总付款金额