Correct behavior?

Mitja Trampus nun at
Fri Apr 27 19:23:47 CEST 2007

DanBishop04 at wrote:
> On Apr 26, 8:34 pm, asker <vizcay... at> wrote:
>> But:>>> print "%15.2f" % a+b
>> Traceback (most recent call last):
>>   File "<stdin>", line 1, in <module>
>> TypeError: cannot concatenate 'str' and 'float' objects
>> Is this correct for Python to issue this error?
> The % operator has higher precedence than +.  Thus, "%15.2f" % a+b ==
> ("%15.2f" % a)+b, an illegal str+float addition.

Just as a warning:
If you're not expecting this behavior, you can get a pretty 
  nasty surprise if the adddition in question is str+str and 
the operation becomes legal (but semantically different):

s1 = "Captain "
s2 = "Bertorelli"
print "Ah, %s! Welcome to my humble cafe..." % s1+s2

--> "Ah, Captain ! Welcome to my humble cafe...Bertorelli"

Of course this can (and should) be avoided using 
"...%s%s..." % (s1,s2), but I know it has bitten me once.

More information about the Python-list mailing list