[Python-de] Extension

Stefan Behnel python-de at behnel.de
So Apr 1 11:08:27 CEST 2012


Bernd Nawothnig, 27.03.2012 17:03:
>     for (i=0; i<vl->length; i++)
>       PyList_SetItem(result, i, Py_BuildValue("O", vl->list[i]->anomaly));

Was mir gerade auffällt: ist das nicht grober Unfug? Warum sollte das
besser sein als

     for (i=0; i<vl->length; i++) {
       PyObject* obj = vl->list[i]->anomaly;
       Py_INCREF(obj);
       PyList_SET_ITEM(result, i, obj);
     }

?

Langsamer ist es in jedem Fall, aber besser? Selbst in dem Fall, dass eines
der "anomaly" Felder NULL ist, ignorierst du doch schließlich einfach die
Exception, die Python dann für dich setzt. Übrigens auch unschön, so etwas
zu tun, aber findet sich in handgeschriebenem Code eben öfter mal. Deshalb
empfehle ich ja auch keinem, sowas von Hand zu schreiben.

Stefan


Mehr Informationen über die Mailingliste python-de