python多装饰器的执行顺序

# !/usr/bin/env python 
# -*- coding: utf-8 -*- 
# @Time : 2022/2/22 22:22 
# @Author : 陈磊
import functools


def time_d(*args, **kwargs):
    print(f"1-time_d的装饰器参数 args: {args}  kwargs: {kwargs}")

    def decorate(func):
        print(7)

        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            print(f"9-func_name-time_d: {func.__name__}")
            result = func(*args, **kwargs)
            print(13)
            return result

        print(8)
        return wrapper

    print(2)
    return decorate


def time_c(*args, **kwargs):
    print(f"3-time_c的装饰器参数 args: {args}  kwargs: {kwargs}")

    def decorate(func):
        print(5)

        @functools.wraps(func)
        def wrapper(*args, **kwargs):
            print(f"10-func_name-time_c: {func.__name__}")
            result = func(*args, **kwargs)
            print(12)
            return result

        print(6)
        return wrapper

    print(4)
    return decorate


@time_d('120', name='arley')
@time_c('110', name='chen')
def func_name(name):
    print(11)
    return f"result: {name}"


result = func_name('chen')
print(result)
"""

1-time_d的装饰器参数 args: ('120',)  kwargs: {'name': 'arley'}
2
3-time_c的装饰器参数 args: ('110',)  kwargs: {'name': 'chen'}
4
5
6
7
8
9-func_name-time_d: func_name
10-func_name-time_c: func_name
11
12
13
result: chen

"""

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2436534

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值