可变参数的形式会报错

def addlog(func):
    def wrapper(self,*args,**kwargs):
        print('装饰器开始')
        func(self,*args,**kwargs)
        print(args,kwargs)
        print('装饰器结束')
    return wrapper

class TestObj:
    data=[['aaa',11],['bbb',22]]
    @user1ize("name,age",data)
    @addlog
    def test_A(self,name,age):
        print('开始用例',name,age)

换成不可变参数是可以正常运行的

def addlog(func):
    def wrapper(self,name,age):
        print('装饰器开始')
        func(self,name,age)
        print(name,age)
        print('装饰器结束')
    return wrapper


class TestObj:
    data=[['aaa',11],['bbb',22]]
    @user3ize("name,age",data)
    @addlog
    def test_A(self,name,age):
        print('开始用例',name,age)

请问结合使用的话,装饰器里面的参数为什么一定要为不可变参数?


↙↙↙阅读原文可查看相关链接,并与作者交流