C#和Python都允许使用命名参数,因此您可以编写类似:foo(bar:1)
的内容。这很好,特别是与可选参数结合使用。
我的问题是: C#和Python命名参数之间有什么区别?如果有的话?我对哪个是“最好的”并不感兴趣,但是它是否存在差异这些差异背后的可能动机。
如果有人知道与其他语言实现此功能的差异(可能是Ruby或Objective-C),那也可能很有趣。
已编辑以制作社区维基
答案 0 :(得分:6)
Python允许你将未指定的命名参数“捕获”到dict中,这非常方便
>>> def f(**kw):
... print kw
...
>>> f(size=3, sides=6, name="hexagon")
{'sides': 6, 'name': 'hexagon', 'size': 3}
答案 1 :(得分:5)
Python不仅允许您将未指定的命名参数捕获到dict中,还允许您将dict解包为参数:
>>> def f(alfa, beta, gamma):
... print alfa, beta, gamma
...
>>> f(**{'alfa': 1, 'beta': 2, 'gamma': 3})
1 2 3
并将它们传递给流:
>>> def g(**kwargs):
... f(**kwargs)
...
>>> g(**{'alfa': 1, 'beta': 2, 'gamma': 3})
1 2 3