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

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条回答 默认 最新

相关推荐 更多相似问题