Python 许多命名参数与*kwargs
我知道这个问题已经用几种不同的方式被问过好几次了,但是没有一个真正解决了我的问题。我有一个需要大量参数的函数,它没有做太多。它只需获取将从设备传入的参数,然后在reportlabs中的表上绘制它们。所以我的问题是:将所有10个变量作为命名参数传入更好,还是使用**kwargs更好。我将始终知道传入的数据类型。您是定义函数还是调用函数?如果定义,您应该问的真正问题是您是否关心正在调用的函数签名的明确性。提供明确的参数列表将让函数的用户确切地知道支持什么,执行Python 许多命名参数与*kwargs,python,python-3.x,args,convention,keyword-argument,Python,Python 3.x,Args,Convention,Keyword Argument,我知道这个问题已经用几种不同的方式被问过好几次了,但是没有一个真正解决了我的问题。我有一个需要大量参数的函数,它没有做太多。它只需获取将从设备传入的参数,然后在reportlabs中的表上绘制它们。所以我的问题是:将所有10个变量作为命名参数传入更好,还是使用**kwargs更好。我将始终知道传入的数据类型。您是定义函数还是调用函数?如果定义,您应该问的真正问题是您是否关心正在调用的函数签名的明确性。提供明确的参数列表将让函数的用户确切地知道支持什么,执行**kwargs将不会有这样的功能,但会
**kwargs
将不会有这样的功能,但会更容易定义函数。如果调用,您只需将一个dict
作为**kwargs
传递,并希望该函数能实现您所期望的功能。我正在定义它,然后在稍后的脚本中调用它来构建表。它工作得很好,所以没有任何问题,这是一个更传统的问题,如果有的话。对于将来可能研究这个问题的人来说,将它们都作为命名参数可能更有意义。这实际上取决于你喜欢什么:正确性还是简单性**kwargs
带有。get('key',默认值)
将允许可能不需要的参数,但会大大简化函数签名。如果您希望支持正确性,您可能应该显式地提供允许的关键字。