在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", {})
这两者之间有一个首选方法吗?
是。尽可能使用真实参数,因为它们将显示在函数的help()
中。看到一个函数有一个签名(**kwargs)
,它不会告诉你它接受什么参数。看到签名(search_term, whole_word=False, case_sensitive=True)
更有价值。
使用好名称是一种文档形式,减少了编写其他文档的需要(以及由于代码更改而过时的可能性)。