摸才狗 2022-01-10 05:12 采纳率: 0%
浏览 18

python中的装饰器语法糖

假如我有一个函数,作用是打印从start开始到end为止每一个数

def count(start, end):
    for i in range(start, end+1):
        print(i)

现在我想用装饰器在函数count执行前显示“报数开始”,结束后显示“报数结束”

def mydecorator(func):
    def warpper(*args, **kwargs):
        print("---报数开始---")
        func(*args, **kwargs)
        print("---报数结束---")
    return warpper


@mydecorator
def count(start, end):
    for i in range(start, end+1):
        print(i)


count(start=0, end=10)

和下面这种写法有什么区别,优缺点是什么?

def deal(func, *args, **kwargs):
    print("---报数开始---")
    func(*args, **kwargs)
    print("---报数结束---")


def count(start, end):
    for i in range(start, end+1):
        print(i)


deal(count, start=0, end=10)
  • 写回答

2条回答 默认 最新

  • 猫猫爱吃鱼 2022-01-10 06:52
    关注

    装饰器的实现就是下面的代码

    评论

报告相同问题?

问题事件

  • 创建了问题 1月10日