[Python-Dev] assignment expressions: an alternative proposal (original) (raw)
Paul Moore p.f.moore at gmail.com
Tue Apr 24 10:49:55 EDT 2018
- Previous message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Next message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On 24 April 2018 at 14:46, Nick Coghlan <ncoghlan at gmail.com> wrote:
On 24 April 2018 at 23:38, Yury Selivanov <yselivanov.ml at gmail.com> wrote:
I propose to use the following syntax for assignment expressions:
( NAME = expr ) I know that it was proposed before and this idea was rejected, because accidentally using '=' in place of '==' is a pain point in C/C++/JavaScript. That said, I believe we can still use this syntax as long as we impose the following three restrictions on it: 1. Only NAME token is allowed as a single target. 2. Parenthesis are required. 3. Most importantly: it is not allowed to mask names in the current local scope. While I agree this would be unambiguous to a computer, I think for most humans it would be experienced as a confusing set of arcane and arbitrary rules about what "=" means in Python.
Also, there's the ambiguity and potential for misreading in the opposite direction (accidentally reading = as == even though it isn't):
if (diff = x - x_base) and (g = gcd(diff, n)) > 1: return g
My immediate reading of this is as an equality comparison between diff and x - x_base (which would send me futilely looking for a definition of diff) and an equality comparison of g and gcd(diff, n)... wait, why am I doing (equality comparison) > 1? Oh, hang on... At this point, any hope of me quickly understanding what this code does is lost.
Paul
- Previous message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Next message (by thread): [Python-Dev] assignment expressions: an alternative proposal
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]