C#和Python都允许命名参数,因此您可以编写如下代码:foo(bar:1)
。这很好,尤其是与可选参数结合使用时。命名参数:C#vs Python
我的问题是:C#和Python命名参数(如果有的话)之间有什么区别?我对哪种“最好”不感兴趣,但是这些差异背后是否存在差异和可能的动机。
如果有人知道与其他语言实现此功能(Ruby或Objective-C,也许)的区别,那也可能很有趣。
编辑来让社区维基
C#和Python都允许命名参数,因此您可以编写如下代码:foo(bar:1)
。这很好,尤其是与可选参数结合使用时。命名参数:C#vs Python
我的问题是:C#和Python命名参数(如果有的话)之间有什么区别?我对哪种“最好”不感兴趣,但是这些差异背后是否存在差异和可能的动机。
如果有人知道与其他语言实现此功能(Ruby或Objective-C,也许)的区别,那也可能很有趣。
编辑来让社区维基
的Python不仅可以让你赶上未指定命名参数进一个字典,但也可以让你解压字典为参数:
>>> 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
的Python让你“赶”未指定命名的参数为一个字典,这是非常方便的
>>> def f(**kw):
... print kw
...
>>> f(size=3, sides=6, name="hexagon")
{'sides': 6, 'name': 'hexagon', 'size': 3}
这个问题到底是什么?我认为如果没有足够的背景,这个问题可能会变得主观...... – 2010-02-02 21:48:45