新手初学python,输出的结果跟我想象中不一样
`#定义一个类的装饰器Bold class Bold(object): def __init__(self, func): self.func = func def __call__(self, *args, **kwargs): return '' + self.func(*args, **kwargs) + '' #相当于 hello=Bold(hello) 生成一个hello.func为hello函数的 #Bold实例化对象 @Bold def hello(name): return 'hello %s' % name` #然后我打算传多个参数 *args >>> hello('ss','sss','aa') File "", line 5, in __call__ TypeError: hello() takes exactly 1 argument (3 given)`
这里完全不理解,这里的hello()里的参数不是__call__的args, *kwargs 吗,为什么变成只能是一个参数?
*args
, **kwargs
分别是表示可以接收可变参数和关键字参数,可以接收任何0个或者1个或者多个参数。*args
, **kwargs
组合起来就是说__call__
能接收任何参数啦~~但是顺序要对。