Параметры, передаваемые по имени: C# по сравнению с Python

И C# и Python позволяют параметры, передаваемые по имени, таким образом, можно записать что-то как: foo(bar:1). Здорово, особенно в сочетании с дополнительными аргументами.

Мой вопрос: каковы различия между C# и параметрами, передаваемыми по имени Python, если таковые имеются? Мне не интересно, в котором является "лучшим", но в том, существуют ли различия и в возможных мотивациях позади этих различий.

И если кто-то знает о различиях с реализациями других языков этой функции (Ruby или Objective C, возможно), который мог быть интересным также.

отредактированный для создания общественной Wiki

5
задан 5 revs, 3 users 59% 9 April 2013 в 12:42
поделиться

2 ответа

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
5
ответ дан 13 December 2019 в 19:27
поделиться

Python позволяет вам «перехватывать» неуказанные именованные аргументы в dict, что очень удобно

>>> def f(**kw):
...     print kw
... 
>>> f(size=3, sides=6, name="hexagon")
{'sides': 6, 'name': 'hexagon', 'size': 3}
6
ответ дан 13 December 2019 в 19:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: