2010-02-02 25 views
5

Tanto C# como Python permiten argumentos con nombre, por lo que puede escribir algo como: foo(bar:1). Esto es genial, especialmente en combinación con argumentos opcionales.Argumentos con nombre: C# frente a Python

Mi pregunta es: ¿Cuáles son las diferencias entre los argumentos nombrados de C# y Python, si los hay? No estoy interesado en cuál es el "mejor", sino en si existen diferencias y en las posibles motivaciones detrás de estas diferencias.

Y si alguien sabe de las diferencias con las implementaciones de esta característica en otros lenguajes (Ruby o Objective-C, tal vez), eso podría ser interesante también.

editado para hacer comunidad wiki

+0

¿Para qué es esta pregunta? Creo que si no hay suficientes antecedentes, esta pregunta podría ser subjetiva ... –

Respuesta

5

Python no sólo le permite ponerse argumentos con nombre no especificados en un diccionario, sino que también le permite desempaquetar un diccionario en argumentos:

>>> def f(alfa, beta, gamma): 
    ...  print alfa, beta, gamma 
    ... 
    >>> f(**{'alfa': 1, 'beta': 2, 'gamma': 3}) 
    1 2 3 

y pasarlos por la corriente:

>>> def g(**kwargs): 
    ...  f(**kwargs) 
    ... 
    >>> g(**{'alfa': 1, 'beta': 2, 'gamma': 3}) 
    1 2 3 
6

Python le permite "atrapar" argumentos con nombre no especificados en un diccionario, que es bastante práctico

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