diferencias entre PyArg_ParseTuple y PyArg_ParseTupleAndKeywords?

Milton Galo Patricio Inostroza Aguilera minoztro en gmail.com
Vie Mayo 2 01:37:20 CEST 2008


Estimados:

   Me he animado a aprender a programar modulos en c para python {para
poder luego entender la implementacion misma del lenguaje}...y me he
encontrado con estas dos funciones.

   En realidad no noto cual es la diferencia de uso de estas dos
funciones, si bien es cierto que tienen una declaracion distintas
(argumentos), en la utilizacion de estas no puedo ver la diferencia
entre una y otra...muestro un ejemplo {que es el que esta en el manual
de extending and embedding python}:

static PyObject *
keywdarg_parrot(PyObject *self, PyObject *args, PyObject *keywds)
{
    int voltage;
    char *state = "a";
    char *action = "a";
    char *type = "a";

    static char *kwlist[] = {"state", "action", "type","voltage", NULL};
    if (!PyArg_ParseTupleAndKeywords(args, keywds, "i|sss",kwlist,
                                                &voltage,&state,&action,&type))

    printf("%s %i \n",action,voltage);
    printf("%s %s \n",state,type);
    Py_INCREF(Py_None);
    return Py_None;
}


si en vez de utilizar el PyArg_ParseTupleAndKeywords, utilizo
PyArg_ParseTuple de la siguiente manera:

    if(!PyArg_ParseTuple(args,"i|sss",&voltage,&state,&action,&type))
        return NULL;

El resultado es el mismo...entonces no se por donde pasa la diferencia
de uso de estas dos funciones...y me queda otra duda cual es la mision
de kwlist, tampoco la entiendo mucho..porque si en vez de poner los
nombre de las variables y pongo cualquier cosa, el modulo cuando lo
importo desde python funciona igualmente bien, la modificacion que
realice a kwlist es la siguiente:

static char *kwlist[] = {"algo", "algodos", "algotres","algocuatro", NULL};


Gracias por vuestra ayuda, saludos

-- 
Milton Inostroza Aguilera
------------ próxima parte ------------
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes


Más información sobre la lista de distribución Python-es