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 に答える