On Thu, Sep 17, 2020 at 9:27 PM Ricky Teachey <ricky@teachey.org> wrote:
On Thu, Sep 17, 2020 at 2:57 PM Brendan Barnwell <brenbarn@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" .
The same problem exists for assignments to tuples, subscripts, attributes, even plain variables. I've often wanted to put an assignment target in a variable.