python装饰器利用了函数闭包和函数可以当做参数进行传递的特性,函数闭包指在一个函数中嵌套一个函数,同时外层函数返回内层函数

user = { "is_login": False}def edit_user(): print('用户名修改成功')def add_article(): print('添加文章成功')def login_required(func): def wrapper(): if user['is_login'] == True: func() else: print('跳转到登录页面') return wrapperlogin_required(edit_user)()login_required(add_article)()

#利用语法糖可以简化调用

user = { "is_login": False}def login_required(func): def wrapper(): if user['is_login'] == True: func() else: print('跳转到登录页面') return wrapper@login_requireddef edit_user(): print('用户名修改成功')@login_requireddef add_article(): print('添加文章成功')#调用时,由于@语法糖的作用,被装饰函数自动将自己的函数名作为参数传给装饰器函数edit_user()add_article()