How smart is the Python interpreter?

Diez B. Roggisch deets at nospam.web.de
Thu Jul 31 07:57:28 EDT 2008


ssecorp wrote:

> def str_sort(string):
> s = ""
> for a in sorted(string):
> s+=a
> return s
> 
> 
> if i instead do:
> 
> def str_sort(string):
> s = ""
>         so = sorted(string)
> for a in so:
> s+=a
> return s
> 
> 
> will that be faster or the interpreter can figure out that it only has
> to do sorted(string) once? or that kind of cleverness is usually
> reserved for compilers and not interpreters?

There isn't much cleverness involved here - why on earth should one execute
the sorted(string) several times? 

The 

for <name> in <iterable_yielding_expression>

construct will evaluate the <iterable_yielding_expression> of course only
once.

Diez



More information about the Python-list mailing list