Why ' '.some_string is often used ?

Jacek Generowicz jacek.generowicz at cern.ch
Wed Jan 7 07:56:41 EST 2004


"Stéphane Ninin" <stefnin.nospam at yahoo.fr> writes:

>   Hi all,
> 
> This is not the first time I see this way of coding in Python and 
> I wonder why this is coded this way:
> 
> Howto on PyXML
> (http://pyxml.sourceforge.net/topics/howto/node14.html) 
> shows it on this function, but I saw that in many other pieces of code:
> 
> def normalize_whitespace(text):
>     "Remove redundant whitespace from a string"
>     return ' '.join(text.split())
> 
> Is there a reason to do instead of just returning join(text.split()) ?

One reason for preferring the former over the latter might be that the
former works, while the latter doesn't:


   >>> text = '   this   is   a   late   parrot  '
   >>> ' '.join(text.split())
   'this is a late parrot'
   >>> join(text.split())
   Traceback (most recent call last):
     File "<stdin>", line 1, in ?
   NameError: name 'join' is not defined
   
You can make it work of course ...
   
   >>> from string import join
   >>> join(text.split())
   'this is a late parrot'

But you shouln't really be polluting your globals with stuff from
modules, so you'd probably prefer to

   import string

rather than

   from string import join

(or, heaver forbid

   from string import *

!)

In which case you would end up writing

   string.join(text.split())

which is a whole whopping 3 characters longer than

   ' '.join(text.split())

:-)

If you are too zealous in your interpretation of the second line of
the Zen of Python[*], then you might also prefer the latter as it is
more explicit than the former.




[*] try: 

   >>> import this



More information about the Python-list mailing list