Skip to main content
 首页 » 编程设计

python之默认参数还是 kwargs

2025年05月04日14shangdawei

在 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) 更有值(value)。

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