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

Reply via email to