如图,被装饰函数edit_user需要传递一个username进去,装饰器并没有做任何更改就会报错。

原因就是在运行edit_user(“Qiubai”)的时候,这段语句等价于login_reuqired(edit_user)(“Qiubai”),执行之后就会返回wrapper,在定义的时候wrapper没有说明需要传参数,但是在edit_user后面传了username的参数,导致报错

解决方法:

另一种情况:

如果再加入上图的代码,还是会因为参数个数的问题报错

解决方法:

因为*args,**kwargs代表任何位置和任何关键字参数,组合在一起代表任何参数