[Python-Dev] Auto-str and auto-unicode in join

Nick Coghlan ncoghlan at iinet.net.au
Tue Aug 31 23:00:43 CEST 2004


M.-A. Lemburg wrote:
> Tim Peters wrote:
> 
>> If we were to do auto-str, it would be better to rewrite str.join() as
>> a 1-pass algorithm, using the kind of "double allocated space as
>> needed" gimmick unicode.join uses.  It would be less efficient if
>> auto-promotion to Unicode turns out to be required, but it's hard to
>> measure how little I care about that; it might be faster if auto-str
>> and Unicode promotion aren't needed (as only 1 pass would be needed).
> 
> 
> FWIW, I'm -1 on doing auto-conversion using str()/unicode() in
> .join().

I'm leaning that way myself. The 'auto-str' behaviour gives significant 
speed increases over the ''.join([str(x) for x in seq]) idiom, but the 
semantics become tricky when unicode, strings and things which are 
neither get mixed in the sequence. It also increases the complexity of 
the C code for the join methods.

(Note that the version of auto-str I tried out *doesn't* actually mimic 
the list comprehension idiom - it tries to detect unicode and switch 
join implementations as appropriate, etc, etc.)

Cheers,
Nick.



More information about the Python-Dev mailing list