5

C# 和 Python 都允许命名参数,因此您可以编写如下内容:foo(bar:1). 这很棒,尤其是与可选参数结合使用时。

我的问题是:C# 和 Python 命名参数之间有什么区别(如果有的话)?我对哪个是“最好的”不感兴趣,而是对是否存在差异以及这些差异背后的可能动机感兴趣。

如果有人知道此功能与其他语言实现的差异(可能是 Ruby 或 Objective-C),那也可能很有趣。

编辑以制作社区维基

4

2 回答 2

6

Python 允许你将未指定的命名参数“捕获”到 dict 中,这非常方便

>>> def f(**kw):
...     print kw
... 
>>> f(size=3, sides=6, name="hexagon")
{'sides': 6, 'name': 'hexagon', 'size': 3}
于 2010-02-02T21:49:37.897 回答
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
于 2010-02-02T22:35:38.647 回答