On 9/18/2020 8:19 AM, Ricky Teachey wrote:
On Fri, Sep 18, 2020, 8:17 AM Ricky Teachey <ri...@teachey.org
<mailto:ri...@teachey.org>> wrote:
Why not just grow a parse method on str that returns a dict and do
it this way?
q = "{a} {b}"
p = "1 2"
(a, b) = q.parse(p)
Sorry that should have been:
(a, b) = q.parse(p).values()
I don't understand why returning a dict is useful. Unless this becomes
as complicated as regexes with grouping, etc. (in which case: use a
regex), the values will be returned in the order they appear in the
template string. So just have it return a tuple:
a, b = q.parse(p)
Or for something that could be written today:
a, b = parse("{:d} {:d}", "1 2")
assert a == 1 and b == 2
I don't see the need for new syntax or new ways to assign values. You're
not even removing any duplication compared to:
f"{a:d} {b:d}" = "1 2"
Although I grant you'd be saving a few characters of typing. But there's
no DRY advantage to be gained. And you wouldn't be restricted to using
string literals for the template.
If it got super popular, make parse() a method on str.
As near as I can tell, all of these proposals would require type
checkers to be modified to understand them, but that's the nature of the
beast when you have the type of something dependent on the contents of a
string. They would have to figure out that a and b are int's in my example.
So, still -1 on any special syntax for this.
Eric
_______________________________________________
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/BTYVPBPBKXRJOUXUR25JLTRANZZRIPY2/
Code of Conduct: http://python.org/psf/codeofconduct/