文档中把它们的用法很简洁得说清楚了。怎么记住*和**在函数定义和函数调用时的区别呢?简单地概况,就是“定义的压缩,调用的解开”。
- 若出现在函数定义中,则实际调用时把接收的一串arguments或keyword arguments,压缩成元组或者字典
- 如出现在函数调用中,则把接收的iteratable或者mapping,解开为一串arguments或者keyword arguments
可以看到放在定义和调用时的区别。def decorator(target):
def caller(*args, **kwargs):
return target(*args, **kwargs)
return caller
没有评论:
发表评论