On Thu, May 10, 2018 at 11:13 PM, Facundo Batista
<facundobati...@gmail.com> wrote:
>> I would like to see you flesh out the idea. In particular, I'd like to see 
>> you
>> address cases where:
>> 1. The underlying members in the collection are not strings. Besides the 
>> basic
>>    types such as numbers, it would also be nice to be able to apply formats
>>    recursively so that one can construct a string using the attributes of
>>    members that are objects or items or other collections.
>
> I didn't think about this at the time. I have the feeling (not really
> well thought yet) that "recursive formatting" will complicate
> everything too much, that doing str() (as {} defaults to) on every
> object would fulfill most of the basic cases and keep this simple.
>
>
>> 2. The ability to handle collections other than simple lists or iterables, 
>> such
>>    as dictionaries.
>
> Ideally, it will handle *any* iterable.

If it's to handle arbitrary iterables, it can't be the normal style of
"take this string, pass it to the object's __format__ method, and let
it interpret it". That's why I suggested a bang notation instead. We
have some already:

>>> x = "O'Really?"
>>> print(f"!s: {x!s}  !r: {x!r}")
!s: O'Really?  !r: "O'Really?"

Those markers apply to ANY object, and pass it through str() or repr()
respectively, before using any provided format string. A "!j" flag
could take an iterable, format each element using the given format,
and then join them. The letter "j" makes good sense then, as it
parallels str.join() - this would be broadly similar to
"...".join(format(...) for x in iter).

ChrisA
_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to