about the implement of the PyString_InternFromString

Kyo Guan kguan at corp.netease.com
Thu May 4 07:44:24 EDT 2006


Hi guys:

	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?

Kyo.





More information about the Python-list mailing list