有个问题想问下。。
Topic source def wrapper(*args, **kw):
print('%s %s():' % (text, func.__name__))
return func(*args, **kw)
额。。再发一次,刚刚的有问题。。。
这个函数的定义,参数一定要带上*args
和**kw
吗?
我的理解,不是说func()没有参数,这里面的func就只有是指@后面带到的那个主体函数。 而且wrapper,带这两个参数,是确保这是一个通用函数,也就是说, 带上这两个参数以后,其实func(args,*kw)代表的是所有函数。世界上,所有的函数,都被这个函数代指了。也就变相的实现了不管func是什么样的函数,都可以成功继续执行这个主体函数。
我的理解好像也不是很透彻,讲的自己也有点稀里糊涂。。
当你用上*args, **kw
的时候,任何参数的函数都能使用此装饰器,否则会有某些参数没传递的问题。一个装饰器只是附加的作用,原则上不能影响原函数,也不应该限定被装饰函数的类型,所以这里是必须这样写的。
- 1
吾非名家
def wrapper(args, **kw): print('%s %s():' % (text, func.name)) return func(args, **kw)
这个函数的定义,参数一定要带上args和*kw吗?