Why doesn't join() call str() on its arguments?

news.sydney.pipenetworks.com nytimes at swiftdsl.com.au
Thu Feb 17 09:08:03 EST 2005


Fredrik Lundh wrote:
> "news.sydney.pipenetworks.com" wrote:
> 
> 
>>>Nick "Explicit is better than Implicit"
>>
>>Really ? Then why are you using python. Python or most dynamic languages are are so great because 
>>of their common sense towards the "implicit". You must have heard of "never say never" but "never 
>>say always" (as in "always better") is more appropriate here. There are many cases of python's 
>>implicitness.
> 
> 
> a certain "princess bride" quote would fit here, I think.

I'm not really familiar with it, can you enlighten please.

>>What about
>>
>>a = "string"
>>b = 2
>>c = "%s%s" % (a, b)
>>
>>There is an implicit str(b) here.
> 
> 
> nope.   it's explicit: %s means "convert using str()".

ok you got me there, although it must be bad practice compared to

c = "%s%d" % (a, b)

because this is much more explicit and will tell you if b is ever 
anything other then an integer even though you may not care.

> from the documentation:
> 
>           %s     String (converts any python object using str()).
> 
> 
>>''.join(["string", 2]) to me is no different then the example above.
> 
> 
> so where's the "%s" in your second example?
> 
> </F> 

I'm not sure if this has been raised in the thread but I sure as heck 
always convert my join arguments using str(). When does someone use 
.join() and not want all arguments to be strings ? Any examples ?

Regards,

Huy




More information about the Python-list mailing list