On Thu, Sep 17, 2020 at 2:57 PM Brendan Barnwell <brenb...@brenbarn.net>
wrote:

> On 2020-09-16 21:52, Dennis Sweeney wrote:
> > TL;DR: I propose the following behavior:
> >
> >      >>> s = "She turned me into a newt."
> >      >>> f"She turned me into a {animal}." = s
> >      >>> animal
> >      'newt'
> >
> >      >>> f"A {animal}?" = s
> >      Traceback (most recent call last):
> >      File "<pyshell#2>", line 1, in <module>
> >              f"A {animal}?" = s
> >      ValueError: f-string assignment target does not match 'She turned
> me into a newt.'
> >
> >      >>> f"{hh:d}:{mm:d}:{ss:d}" = "11:59:59"
> >      >>> hh, mm, ss
> >      (11, 59, 59)
>

A difficulty I have with the idea as presented is this.

If I can say this:

"{x:d} {y:d} {z:d}" = "1 2 3"

...thus assigning 1, 2, 3 to x, y, z respectively, I might want to also do
the same thing this way:

q = "{x:d} {y:d} {z:d}"
q = "1 2 3"

The intent being: save the f-string as a variable, and then use it to
assign later. But that can obviously never work because q would just become
the string "1 2 3" .

We can already do the reverse of this operation, of course:

>>> q = "{x:d} {y:d} {z:d}"
>>> d = dict(x=1, y=2, z=3)
>>> q = "{x:d} {y:d} {z:d}"
>>> q.format(**d)
'1 2 3'

What would be the operation we are inverting, here?

Perhaps a better way would be-- rather than assigning the values to the
global x,y,z-- create a string method that returns a dictionary with the
names and the values inside:

>>> q = "{x:d} {y:d} {z:d}"
>>> p = "1 2 3"
>>> q.parse(p)
{'x': 1, 'y': 2, 'z': 3}

..but of course this way we can to the same thing with the literal
f-string, similar to what others have proposed:

>>> "{x:d} {y:d} {z:d}".parse("1 2 3")
{'x': 1, 'y': 2, 'z': 3}

---
Ricky.

"I've never met a Kentucky man who wasn't either thinking about going home
or actually going home." - Happy Chandler
_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/VO56CBBET7NOPQ3ELXMGJ2FNOBVVTCGZ/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to