Py学习  »  Python

命名参数:c vs python

redtuna • 5 年前 • 1506 次点击  

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

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

如果有人知道这个特性与其他语言的实现(可能是ruby或objective-c)有什么不同,那也可能很有趣。

编辑以生成社区wiki

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/39890
 
1506 次点击  
文章 [ 2 ]  |  最新文章 5 年前
John La Rooy
Reply   •   1 楼
John La Rooy    15 年前

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

>>> def f(**kw):
...     print kw
... 
>>> f(size=3, sides=6, name="hexagon")
{'sides': 6, 'name': 'hexagon', 'size': 3}
Tomasz Zielinski
Reply   •   2 楼
Tomasz Zielinski    15 年前

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