Giacomo Alzetta added the comment:

Note that the documentation for formatting with %, found here: 
http://docs.python.org/2/library/stdtypes.html#string-formatting-operations,  
states:

"""
If format requires a single argument, values may be a single non-tuple object. 
[5] Otherwise, values must be a tuple with exactly the number of items 
specified by the format string, or a single mapping object (for example, a 
dictionary)."""

Note how it explicitly states that in an expression: format % value there are 
two different cases:

 - If format contains *exactly one* format specifier, then value can be any 
non-tuple item and it will be formatted as is. Otherwise, value MUST be either 
tuple or a mapping.

In your example '' contains 0 format specifiers, hence you MUST use either a 
tuple or a dict. Any other object triggers "undefined behaviour"(in particular 
depending on whether the object define __geitem__ or not the formatting might 
or might not raise an exception etc.)

AFAIK only few people know this, hence changing the code could potentially 
break a lot of code for apparently no reason.
Since people should start to move to str.format instead of % this wart may not 
be worth fixing.

----------
nosy: +bakuriu

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue18750>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to