Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 许多命名参数与*kwargs_Python_Python 3.x_Args_Convention_Keyword Argument - Fatal编程技术网

Python 许多命名参数与*kwargs

Python 许多命名参数与*kwargs,python,python-3.x,args,convention,keyword-argument,Python,Python 3.x,Args,Convention,Keyword Argument,我知道这个问题已经用几种不同的方式被问过好几次了,但是没有一个真正解决了我的问题。我有一个需要大量参数的函数,它没有做太多。它只需获取将从设备传入的参数,然后在reportlabs中的表上绘制它们。所以我的问题是:将所有10个变量作为命名参数传入更好,还是使用**kwargs更好。我将始终知道传入的数据类型。您是定义函数还是调用函数?如果定义,您应该问的真正问题是您是否关心正在调用的函数签名的明确性。提供明确的参数列表将让函数的用户确切地知道支持什么,执行**kwargs将不会有这样的功能,但会

我知道这个问题已经用几种不同的方式被问过好几次了,但是没有一个真正解决了我的问题。我有一个需要大量参数的函数,它没有做太多。它只需获取将从设备传入的参数,然后在reportlabs中的表上绘制它们。所以我的问题是:将所有10个变量作为命名参数传入更好,还是使用**kwargs更好。我将始终知道传入的数据类型。

您是定义函数还是调用函数?如果定义,您应该问的真正问题是您是否关心正在调用的函数签名的明确性。提供明确的参数列表将让函数的用户确切地知道支持什么,执行
**kwargs
将不会有这样的功能,但会更容易定义函数。如果调用,您只需将一个
dict
作为
**kwargs
传递,并希望该函数能实现您所期望的功能。我正在定义它,然后在稍后的脚本中调用它来构建表。它工作得很好,所以没有任何问题,这是一个更传统的问题,如果有的话。对于将来可能研究这个问题的人来说,将它们都作为命名参数可能更有意义。这实际上取决于你喜欢什么:正确性还是简单性
**kwargs
带有
。get('key',默认值)
将允许可能不需要的参数,但会大大简化函数签名。如果您希望支持正确性,您可能应该显式地提供允许的关键字。