about the implement of the PyString_InternFromString

Fredrik Lundh fredrik at pythonware.com
Thu May 4 08:26:35 EDT 2006


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> 






More information about the Python-list mailing list