Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
命名参数:C#vs Python_C#_Python_Keyword Argument - Fatal编程技术网

命名参数:C#vs Python

命名参数:C#vs Python,c#,python,keyword-argument,C#,Python,Keyword Argument,C#和Python都允许命名参数,因此您可以编写类似于:foo(bar:1)。这很好,尤其是与可选参数结合使用时 我的问题是:C#和Python命名参数之间有什么区别,如果有的话?我不关心哪一个是“最好的”,而是关心是否有区别以及这些区别背后可能的动机 如果有人知道这个特性与其他语言实现(可能是Ruby或Objective-C)的不同,那也会很有趣 通过编辑使社区wiki成为Python,您可以将未指定的命名参数“捕获”到dict中,这非常方便 >>> def f(**kw):

C#和Python都允许命名参数,因此您可以编写类似于:
foo(bar:1)
。这很好,尤其是与可选参数结合使用时

我的问题是:C#和Python命名参数之间有什么区别,如果有的话?我不关心哪一个是“最好的”,而是关心是否有区别以及这些区别背后可能的动机

如果有人知道这个特性与其他语言实现(可能是Ruby或Objective-C)的不同,那也会很有趣

通过编辑使社区wiki成为Python,您可以将未指定的命名参数“捕获”到dict中,这非常方便

>>> def f(**kw):
...     print kw
... 
>>> f(size=3, sides=6, name="hexagon")
{'sides': 6, 'name': 'hexagon', 'size': 3}

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

这个问题的目的是什么?我认为如果没有足够的背景,这个问题可能会变得主观。。。