【问题标题】:Which argument style should I use when defining function? [duplicate]定义函数时应该使用哪种参数样式? [复制]
【发布时间】:2020-10-20 21:56:50
【问题描述】:

如果我有一个函数,它可能接受许多具有默认值的参数。定义它的一种方法是:

def my_func(arg1, arg2=v2, arg3=v3, arg4=v4, arg5=v5)

这是否等同于这种形式:

def my_func(arg1, **kwargs)

这两种形式几乎一样吗?我习惯了第一种形式,这样做的好处是用户可以看到函数中明确定义的参数名称所期望的参数。第二个可以支持任意数量的参数,但用户无法清楚地看到预期的参数。我的理解是真的吗?两者如何选择?

【问题讨论】:

    标签: python


    【解决方案1】:

    如果您有一组特定的已知参数,请使用显式命名的参数。 **kwargs 适用于您无法知道所有参数(例如 dict 构造函数)或不关心所有参数(例如,您是一个子类方法,需要一些参数,并将其余部分传递给超类方法,但不想将超类的参数烘焙到您的 API 中)。除了这些情况,更喜欢明确命名你的论点;它让 Python 检查您是否只收到了您期望的参数,并为它们提供有用的名称,而不是通过无用的名称 kwargs 访问所有内容。

    【讨论】:

      猜你喜欢
      • 2018-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-11
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      相关资源
      最近更新 更多