[Python-ideas] Inline assignments using "given" clauses
Matt Arcidy
marcidy at gmail.com
Fri May 4 15:27:28 EDT 2018
On Fri, May 4, 2018, 11:35 Guido van Rossum <guido at python.org> wrote:
> On Fri, May 4, 2018 at 11:11 AM, Tim Peters <tim.peters at gmail.com> wrote:
>
>> [Nick Coghlan <ncoghlan at gmail.com>]
>> > ...
>> > Using a new keyword (rather than a symbol) would make the new construct
>> > easier to identify and search for, but also comes with all the
>> downsides of
>> > introducing a new keyword.
>>
>> That deserves more thought. I started my paying career working on a
>> Fortran compiler, a language which, by design, had no reserved words
>> (although plenty of keywords). The language itself (and
>> vendor-specific extensions) never had to suffer "but adding a new
>> keyword could break old code!" consequences.
>>
>> In practice that worked out very well, Yes, you _could_ write
>> hard-to-read code using language keywords as, e.g., identifier names
>> too, but, no, absolutely nobody did that outside of "stupid Fortran
>> tricks" posts on Usenet ;-) It had the _intended_ effect in practice:
>> no breakage of old code just because the language grew new
>> constructs.
>>
>> It's no longer the case that Python avoided that entirely, since
>> "async def", "async for", and "async with" statements were added
>> _without_ making "async" a new reserved word. It may require pain in
>> the parser, but it's often doable anyway. At this stage in Python's
>> life, adding new _reserved_ words "should be" an extremely high bar -
>> but adding new non-reserved keywords (like "async") should be a much
>> lower bar.
>>
>
> Do note that this was a temporary solution. In 3.5 we introduced this
> hack. In 3.6, other uses of `async` and `await` became deprecated (though
> you'd have to use `python -Wall` to get a warning). In 3.7, it's a syntax
> error.
>
>
>> That said, I expect it's easier in general to add a non-reserved
>> keyword introducing a statement (like "async") than one buried inside
>> expressions ("given").
>>
>
> I'd also say that the difficulty of Googling for the meaning of ":="
> shouldn't be exaggerated. Currently you can search for "python operators"
> and get tons of sites that list all operators.
>
Without adding hits to the search algorithm, this will remain the case.
Google must have clicks to rank up. Right now there is no page, nothing on
a high "Google juice" page like python.org, no one searching for it, and no
mass of people clicking on it. no SO questions, etc.
there is a transient response for all change. uniqueness and length of
search term is just a faster one. All python syntax is findable eventually
due to popularity. plus a better search is "why would I use...in python"
or similar.
= python also doesn't bring up anything interesting that wouldn't be had
because of just "python". The details are too mundane and/or technical and
everyone knows already.
>
that being said, if := had been (theoretically) included from the
beginning, would people continue to have issues with it? unlikely, but I
can't know. familiarity will cure many of these issues of readability or
symbolic disagreement no matter what is chosen (well, to a point). it's
unfortunate that changes have to be made up front with so little
information like that, so I'm not advocating anything based on this, just
pointing it out.
I do think post hoc assignment will cause a cognitive load, like trying to
figure out which variable is the iterator, and having to keep two contexts
till the end of a comp with one given statement.
[f(x) + a for all a in blah given x=1]
not worse than a double nested comp though.
>
> I also note that Google seems to be getting smarter about non-alphabetic
> searches -- I just searched for "python << operator" and the first hit was
> https://wiki.python.org/moin/BitwiseOperators
>
> --
> --Guido van Rossum (python.org/~guido)
> _______________________________________________
> Python-ideas mailing list
> Python-ideas at python.org
> https://mail.python.org/mailman/listinfo/python-ideas
> Code of Conduct: http://python.org/psf/codeofconduct/
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20180504/3db63dcb/attachment.html>
More information about the Python-ideas
mailing list