On Tue, Oct 20, 2020 at 10:37 PM Rob Cliffe via Python-ideas <python-ideas@python.org> wrote:
In short, "assigning" to f-strings is not and cannot be a simple reversal of having them in expressions. Rather, it is opening a big can of worms.
It's not a reversal of them being in expressions any more than assigning to a list display is a reversal of constructing a list. It's a parallel operation, a counterpart. It would be Python's way of offering an sscanf-like operation, which is something that I've frequently wished for. Regular expressions aren't ideal for all situations, and there are plenty of times when a simple set of parsing rules could be very nicely encoded into a compact form like this. C's sscanf and sprintf aren't perfect counterparts, but they're incredibly valuable. Python has percent formatting for sprintf, but no form of sscanf.
There is no precedent in Python for an expression on the LHS of an assignment. (Tuple unpacking, dotted names, slices, dictionary keys etc. might or might not be considered counter-examples but at least their intent is clear.) Certainly not for something which looks like a literal on the LHS of an assignment.
And the intent here would be just as clear. Assigning to a tuple or list has very well defined semantics, and they don't perfectly correspond to the way you would construct such a thing on the RHS. So, they *are* precedent for this. An sscanf format string is simple, easily understood, and unambiguous. An f-string assignment target would be the same, but using f-string style notation instead. It's that simple. ChrisA