在Javascript或Python中是否有必需的关键字参数?

在Javascript或Python中是否有必需的关键字参数?,javascript,python,ruby,keyword-argument,Javascript,Python,Ruby,Keyword Argument,在javascript或python中是否有必需的关键字参数?这是编程语言的一个共同特征,还是新的和罕见的?它们类似于Ruby 2.1中Ruby中关键字参数的实现+ def obvious_total(subtotal:, tax:, discount:) subtotal + tax - discount end obvious_total(subtotal: 100, tax: 10, discount: 5) # => 105 (以上示例直接来自) 我想知道,因为我真的对上一

在javascript或python中是否有必需的关键字参数?这是编程语言的一个共同特征,还是新的和罕见的?它们类似于Ruby 2.1中Ruby中关键字参数的实现+

def obvious_total(subtotal:, tax:, discount:)
  subtotal + tax - discount
end

obvious_total(subtotal: 100, tax: 10, discount: 5) # => 105
(以上示例直接来自)

我想知道,因为我真的对上一页作者的观点很感兴趣。他基本上建议,所需的关键字参数将有助于编码人员以后理解彼此的代码,同时只会牺牲简洁性。就我个人而言,我认为这是一种体面的权衡,我想知道这是否是普遍的做法

我认为,找到文档记录不完整的代码并想知道哪个参数起什么作用是很常见的。这就是为什么我总是试图在我的方法中加入好的、简洁的说明。我可能会发疯,这是一个完全不必要的特性,毕竟,我只是一个新手,在懒惰时编写脚本。

引入了“仅关键字参数”,因此在Python 3.x中,您可以:

def\u总计(*,小计,税金,折扣):
“”“计算total和force关键字参数。”“”
退货小计+税金-折扣
使用中:

明显的总数(1,2,3) 回溯(最近一次呼叫最后一次): 文件“”,第1行,在 TypeError:显然_total()接受0个位置参数,但给出了3个 >>>明显合计(小计=1,税金=2,折扣=3) 0
在JavaScript(ES6之前)中,根本没有办法使用关键字参数。这方面的约定是定义一个位置参数,用户将对象文本传递到该参数中:

obviousTotal=函数(输入){
返回输入.小计+输入.税-输入.折扣
}
然后将对象文本作为
input
传递。使用中:

>明显的总数(1,2,3)
NaN//因为(1).小计等未定义
>明显总计({小计:1,税:2,折扣:3})
0

ES6允许您通过分解结构来简化这一点,但(据我所知)仍然没有对所需关键字参数的本机支持。

对于Python,请参阅:我认为这是一种为了冗长而冗长的情况。找出函数参数一点也不困难,如果开发人员需要更改/分析函数,他无论如何都必须查找它。编辑:在阅读了Python的基本原理之后,我可以看到纯关键字参数是多么有用。不过,如果你需要一个关键词参数,我想你最好还是重构。你的标题是“你能”,这没问题,但你的问题暗示你想回答“你应该”,这太基于观点了。@jonrsharpe我想我想我想问这个问题的原因有点离题了,但这并没有改变问题的事实。这是不同编程语言的共同特征吗?更具体地说,Python/Javascript?我现在看到,实际上有一个Python实现,但我仍然不知道Javascript的情况如何。如果您认为这有助于问题更好地符合SO格式,我可以编辑问题或问题标题。@user991710好吧,我认为所需的关键字参数的目的是在您不需要时使用它。就像必须在函数中指定id一样,这和func(id:1)一样简单,而且它清楚地表明您要提供某种类型的id,而不是字符串或其他对象。