默认参数还是kwargs?

时间:2017-12-18 17:46:24

标签: python python-3.x

在Python中,有一些不同的方法可以在函数中设置默认关键字参数。我所知道的方式是:

def default(para_1: str = "this is", para_2: str = "an example"):
    print(para_1, para_2)

def keyword(**kwargs):
    para_1 = kwargs.get("para_1", "this is")
    para_2 = kwargs.get("para_2", "an example")

    print(para_1, para_2)

这两个函数都可以这样调用:

default(para_1="this is", para_2="another example")
keyword(para_1="this is", para_2="another example")

达到同样的效果。我知道两种方法之间的唯一区别是使用可变的默认值,其中默认参数需要写为:

def mutable_default(para_1: dict = None):
    if para_1 is None:
        para_1 = {}

虽然kwarg方法不需要以相同的方式重新构造,因为它对于可变默认值是安全的:

def mutable_keyword(**kwargs):
    para_1 = kwargs.get("para_1", {})

两者之间是否有首选方法?

1 个答案:

答案 0 :(得分:6)

是。尽可能使用真实参数,因为它们将显示在函数help()中。看到一个函数有一个签名(**kwargs),它不会告诉你它接受什么参数。看到签名(search_term, whole_word=False, case_sensitive=True)更有价值。

使用好名称是一种文档形式,减少了编写其他文档的需要(以及由于代码更改而过期的可能性)。