我遇到了一个始终具有表单功能的包:

def function(
  arg1,
  arg2,
  *,
  arg3=None,
  arg4=None,
  ...
  argN=None
)

我试图理解如果关键字参数有默认值,那么强制关键字参数的目的.具体而言,有两种情况:

Scenario 1:提供的关键字参数are not.如果没有默认值,这将引发错误,但如果使用默认值,函数将具有与没有强制时相同的精确行为.

Scenario 2:提供了关键字参数are,再次产生了没有强制的相同行为.

这种方法是否有我遗漏/不理解的地方?所有强制参数都有默认值.

谢谢

推荐答案

它不会强制您提供参数,但会强制您在传递时显式提供关键字参数名称.所以function(1, 2, 3)不起作用,因为必须明确指定arg3,即function(1, 2, arg3=3).除此之外,行为保持不变.

当开发人员意识到,如果没有明确说明给定函数的关键字参数的名称,可能会/将使以后阅读代码的开发人员感到困惑时,通常会使用该方法.

Python相关问答推荐

将整组数组拆分为最小值与最大值之和的子数组

基于字符串匹配条件合并两个帧

优化器的运行顺序影响PyTorch中的预测

python中字符串的条件替换

Python Pandas获取层次路径直到顶层管理

在pandas数据框中计算相对体积比指标,并添加指标值作为新列

matplotlib图中的复杂箭头形状

为什么常规操作不以其就地对应操作为基础?

如何在Python请求中组合多个适配器?

使用Python异步地持久跟踪用户输入

如果有2个或3个,则从pandas列中删除空格

Js的查询结果可以在PC Chrome上显示,但不能在Android Chrome、OPERA和EDGE上显示,而两者都可以在Firefox上运行

使用np.fft.fft2和cv2.dft重现相位谱.为什么结果并不相似呢?

将数字数组添加到Pandas DataFrame的单元格依赖于初始化

无法使用请求模块从网页上抓取一些产品的名称

为什么在更新Pandas 2.x中的列时,数据类型不会更改,而在Pandas 1.x中会更改?

对当前的鼹鼠进行编码,并且我的按键获得了注册

将Pandas DataFrame中的列名的长文本打断/换行为_STRING输出?

IpyWidget Select 框未打开

使用OpenPYXL切换图表上的行/列