愚公移山日记·36

愚公移山日记·36

今天的是装饰器的高级用法,因为在多重装饰器的地方没少花时间,有点绕所以今天的跟新有点少。

原装饰器上设置外部变量

'''
装饰器的写法
存在闭包
存在待修饰的函数
'''


def test(path):
    print(path)

    def funvtion_out(func):
        '''外层函数 '''

        def function_in():
            print('----开始验证-----')
            func()

        # 返回内层函数的引用
        return function_in

    # 返回装饰器的引用
    return funvtion_out


@test('login.py')
# @test('login.py') 分解为2步
# 先执行test('login.py')--->function_out 引用
# @ 第一步的结果 --->@function_out

# 下一步
# login = function_out(login)

def login():
    print('开始登录')


@test('register.py')
def register():
    print('开始注册')


login()
register()

# 格式:
# def test(path):
#     function_out():
#     function_in():
#     ...
#     return function_in
#     return function_out
# 作用是向装饰器内部传递参数
# @test('login.py')
# test(login.py) --->function_out
# @ 第一步

多重装饰器

'''
创建一个装饰器,一个待装饰的函数

'''


# 定义一个让文字加粗的装饰器
def makeBlod(func):
    def function_in():
        return '<b>' + func() + '</b>'

    return function_in


# 定义一个让文字倾斜的装饰器
def makeItalic(func):
    def function_in():
        return '<i>' + func() + '</i>'

    return function_in


# <b>helloword-1</b>
@makeBlod
# test = makeBlod(test)
def test():
    return 'helloword-1'


@makeItalic
def test2():
    return 'helloword-2'


@makeBlod
@makeItalic
def test3():
    return 'helloword-3'


print(test())
print(test2())
print(test3())

多重装饰器简单的理解就是对函数进行就近原则的装饰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值