Yet another Python textbook

Colin J. Williams cjw at
Thu Nov 22 13:24:38 CET 2012

 From Yet another Python textbook
On 21/11/2012 5:17 PM, Chris Angelico wrote:
> On Thu, Nov 22, 2012 at 4:03 AM, Colin J. Williams <cjw at> wrote:
>> On 20/11/2012 4:00 PM, Chris Angelico wrote:
>>> To the OP: jmf has an unnatural hatred of Python 3.3 and PEP 393
>>> strings. Take no notice; the rest of the world sees this as a huge
>>> advantage. Python is now in a VERY small group of languages (I'm aware
>>> of just one other) that have absolutely proper Unicode handling *and*
>>> efficient string handling.
>>> ChrisA
>> It's interesting to see that someone else finds the format function to be a
>> pain.  Perhaps the problem lies with the documentation.
> Hang on, what? I'm not sure where the format function comes in. I was
> referring to the underlying representation.
The OP wrote:
   "The absurd flexible string representation has practically
borrowed the idea to propose once Python has a teaching tool."

I perhaps stretched this to refer specifically on one aspect, formatting 
in my comment.
> That said, though, I'm just glad that %-formatting is staying. It's an
> extremely expressive string formatting method, and exists in many
> languages (thanks to C's heritage). Pike's version is insanely
> powerful, Python's is more like C's, but all three are compact and
> convenient.
> str.format(), on the other hand, is flexible. It strikes me as rather
> more complicated than a string formatting function needs to be, but
> that may be a cost of its flexibility.
> ChrisA

Yes is is complicated.

 From my reading of the docs, it seems to me that the three following 
should be equivalent:

   (a) formattingStr.format(values)
   (b) format(values, formattingStr)
   (c) tupleOfValues.__format__(formattingStr

print('{:-^14f}{:^14d}'.format(-25.61, 95 ))
print(format((-25.61, 95), '{:-^14f}{:^14d}'))
(-25.61, 95 ).__format__('{:-^14f}{:^14d}')

The second fails, perhaps because values can only be a single value.
The third fails, the reason is unclear.

Steven D'Aprano earlier said that a better diagnostic tool is planned 
for Python 3.4.

Should we retreat to %-formatting for now?

Colin W.


More information about the Python-list mailing list