[Python-Dev] [format] Restrict fill characters for numerical values

Eric Smith eric at trueblade.com
Wed Nov 11 15:11:48 CET 2009


Stefan Krah wrote:
> Eric Smith <eric at trueblade.com> wrote:
>> Stefan Krah wrote:
>>> Hi,
>>>
>>> I think http://www.python.org/dev/peps/pep-3101/ is too liberal with the
>>> choice of fill characters for numerical values. As far as I can see, this
>>> is quite legal:
>>>
>>>
>>> Python 2.7a0 (trunk:76132M, Nov  6 2009, 15:20:35) 
>>> [GCC 4.1.3 20080623 (prerelease) (Ubuntu 4.1.2-23ubuntu3)] on linux2
>>> Type "help", "copyright", "credits" or "license" for more information.
>>>>> >from decimal import *
>>>>>> format(Decimal(4), "9<10")
>>> '4999999999'
>>>>>> format(Decimal(4), "9>10")
>>> '9999999994'
>>>>>> format(Decimal(4), "->2")
>>> '-4'
>>>
>>>
>>> I propose to disallow digits and '+-' fill characters for numerical values,
>>> except for the combination '0, left-padding'. Actually, I'd prefer to allow
>>> only whitespace and '0, left-padding'.
>> Why?
>>
>> What problem are you trying to prevent that would justify the extra code
>> to implement this and the extra documentation to explain it?
> 
> 
> I simply think that apart from rounding, the output of format should not
> change the numerical value of its argument. The format functions in C do
> not allow this to happen. Are there other languages where this is possible?

I don't know if there are other languages that allow it. But I 
definitely have use cases for padding with '*', for example. I don't see 
the point in just disallowing numbers 1 through 9. If you don't want 
your numbers padded with 9's, don't put a 9 in your format string.

Eric.



More information about the Python-Dev mailing list