python三大神器——装饰器

装饰器”(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
总付款金额
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值