Yet another Python textbook
Terry Reedy
tjreedy at udel.edu
Thu Nov 22 17:12:42 EST 2012
On 11/22/2012 7:24 AM, Colin J. Williams wrote:
> From my reading of the docs, it seems to me that the three following
> should be equivalent:
We read differently...
>
> (a) formattingStr.format(values)
Where 'values' is multiple arguments
> with
> (b) format(values, formattingStr)
"format(value[, format_spec])
Convert a value to a “formatted” representation, as controlled by
format_spec."
I notice that you did not pass multiple args, but indeed just one.
A 'format_spec' is only part of a {} formatting field.
> or
> (c) tupleOfValues.__format__(formattingStr
>>> tuple.__format__
<method '__format__' of 'object' objects>
Which of to say, not specific to tuples.
> Example:
> print('{:-^14f}{:^14d}'.format(-25.61, 95 ))
> print(format((-25.61, 95), '{:-^14f}{:^14d}'))
"The interpretation of format_spec will depend on the type of the value
argument, however there is a standard formatting syntax that is used by
most built-in types: Format Specification Mini-Language." (The latter is
link to the FSML.
'-^14f' and '^14d' are format_specs.
'{:-^14f}{:^14d}' is a format string that includes two fields with
format specs. It is not a format spec in itself and is therefore invalid
by the doc.
> (-25.61, 95 ).__format__('{:-^14f}{:^14d}')
>
> The second fails, perhaps because values can only be a single value.
You only passed one, but you did not pass a format spec and indeed there
is none for tuples. As delivered, format specs only format strings and
numbers as strings. Collection classes other than str recursively format
their members using str() or repr() until they reach strings, numbers,
or customs class instances with custom .__format__ methods.
> Should we retreat to %-formatting for now?
Nonsense. The issues above are the same for % formatting. If you try to
format one object with two % format specs, it will fail for the same
reason. Try the % equivalent of what failed.
'%-14f%14d' % ((-25.61, 95 ),)
--
Terry Jan Reedy
More information about the Python-list
mailing list