2012-07-06 4 views
15

¿Qué significa una sola * sin identificador en los argumentos de la función de Python? Este es un ejemplo que funciona con Python3.2:¿Qué significa un single * sin identificador en las funciones de Python3?

class Shape: 
    def __init__(self, *, shapename, **kwds): 
     self.shapename = shapename 
     super().__init__(**kwds) 

Para mí la estrella después de que el mismo es extraño.

he encontrado aquí (de la línea 46): http://code.activestate.com/recipes/577720-how-to-use-super-effectively/

+1

Puntos extra para el que apunta al PEP;) (recuerdo haber leído un fragmento de un PEP que describe esto, pero no recuerdo dónde, o lo que era, **/me vuelve a google **) – KurzedMetal

Respuesta

13

El solitario * indica que todos los argumentos siguientes son sólo de palabra clave argumentos, es decir, que sólo pueden proporcionarse utilizando su nombre, no como posicional argumento.

Consulte PEP 3102 para obtener más información.

+1

En otras palabras: 'shapename' tiene que agregarse explícitamente al crear un nuevo objeto' Shape', como 'Shape (shapename = 'Circle')' – KurzedMetal

Cuestiones relacionadas