[Tim] >> ".NAME" grated at first, but extends the idea that dotted names are >> always constant value patterns to "if and only if". So it has mnemonic >> value. When context alone can't distinguish whether a name is meant as >> (in effect) an lvalue or an rvalue, no syntax decorations can prevent >> coding errors. Names in destructuring constructs are overwhelmingly >> intended as lvalues, so adding extra cruft to say "no, I meant rvalue" >> is the pragmatic choice.
[Glenn Linderman <v+pyt...@g.nevcal.com>] > This is just a bunch of words to me, without meaning. > > I'd like to understand it. Did you read the PEP? > What do you mean by "the idea that dotted names are always constant > value patterns"? Under the PEP's "Constant Value Pattern" section: Every dotted name in a pattern is looked up using normal Python name resolution rules, and the value is used for comparison by equality with the matching expression (same as for literals). That's what I meant. "Contains a dot" implies "constant value pattern". > What do you mean by 'extends (the above) to "if and only if" '? Because the next sentence from the PEP: As a special case to avoid ambiguity with name patterns, simple names must be prefixed with a dot to be considered a reference: completes turning "contains a dot" into a necessary and sufficient ("if and only if") condition for distinguishing a constant value pattern from a name pattern. Where "constant value pattern" and "name pattern" are again used with the PEP's meanings. > As a result of not understanding the above, I see no mnemonic value. While I do. "If I want `xyz` to be interpreted as a constant value pattern, it needs to contain a dot: `.xyy` should do it. If I want `enums.HI` to be interpreted as a constant value, it already contains a dot, so it will be." > My understanding of the "." as proposed is that it is optional, except > in cases where it would be ambiguous... seems like it would be better if > it were required for one case or the other, so that there would be no > need to determine whether or not it is ambiguous by the surrounding > state/code/declarations. A dot is required, when and only when you want the chunk of syntax to be interpreted as a constant value pattern. I said nothing at all about "_leading_" dots, which appear to be all you have in mind there. _Some_ dot is mandatory to make it a constant value pattern; a _leading_ dot may or may not be required. _______________________________________________ Python-Dev mailing list -- python-dev@python.org To unsubscribe send an email to python-dev-le...@python.org https://mail.python.org/mailman3/lists/python-dev.python.org/ Message archived at https://mail.python.org/archives/list/python-dev@python.org/message/YEUQNW5NUAW2OGMRJN22G3JMSIB4PA4J/ Code of Conduct: http://python.org/psf/codeofconduct/