Kyo Guan wrote: > I have a question about the this API. > > PyObject * > PyString_InternFromString(const char *cp) > { > PyObject *s = PyString_FromString(cp); > if (s == NULL) > return NULL; > PyString_InternInPlace(&s); > return s; > } > > > Why it always try to call PyString_FromString first? if char* cp is already > in the > interned dict, this PyString_FromString call is waster. so I think this API > should > implement as: > > 1. check the interned dict > 2. if cp is not in the dict, then call PyString_FromString, and insert the > new string in > the dict > 3. else : call Py_INCREF and return. > > Is this right?
Python dictionaries contains Python objects, not C strings, and it's a bit difficult to look for an object if you don't have it. </F> -- http://mail.python.org/mailman/listinfo/python-list