On Thu, Sep 17, 2020 at 9:50 PM Ricky Teachey <ricky@teachey.org> wrote:
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:
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... ;)


I'm not actually proposing being able to store assignment targets in variables. I'm saying the hypothetical misconception you bring up already exists for every other kind of thing that can be assigned to, because they all intentionally look like expressions. I don't think I've ever seen learners be confused about this. I don't think it's a good argument against the proposal.