On Thu, Sep 17, 2020 at 3:44 PM Alex Hall <alex.mojaki@gmail.com> wrote:

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'
>

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.

Feels to me akin to what Einstein called spooky action at a distance. ;)

# module A
x = f"{a:d}"

# module B
x.parse("1")
assert a == 1

This seems like a joke I would want to play on someone*, not a useful feature.

* well, if i were a bad person... ;)

---
Ricky.

"I've never met a Kentucky man who wasn't either thinking about going home or actually going home." - Happy Chandler