首页 > 解决方案 > 函数参数最佳实践:dict vs kwargs

问题描述

我有一个 Python 最佳实践问题,我无法在网上找到一个好的答案(可能是由于谷歌搜索技能不足)。在定义一个采用可变数量的键值对的函数时,我可以定义一个采用 a 的参数dict,例如:

def func(dict_param):
    for key, value in dict_param.items():
        # do stuff

或允许函数采用**kwargs

def func(**kwargs):
    for key, value in kwargs.items():
        # do stuff

我的问题是:是否有任何理由使用dictover**kwargs反之亦然?这取决于吗?各有什么注意事项?这里有哪些最佳实践?

标签: pythonpython-3.x

解决方案


使用时,如果参数未作为实参传递def func(dict_param),此函数将出错。dict_param

但是,当def func(**kwargs)使用时,字典参数是可选的,并且函数可以在不传递参数的情况下运行(除非有其他参数)

但正如 norok2 所说,

显式优于隐式。

因此,您应该始终设计您的函数来尽量避免这些模棱两可的参数,以避免任何潜在的类型错误。

希望这可以帮助 :)


推荐阅读