Btw. Here's a way of spelling the proposed syntax that gets the semantics right:
>>> # pip install coalescing >>> NullCoalesce(spam).eggs.bacon On Wed, Jul 25, 2018 at 10:14 PM David Mertz <me...@gnosis.cx> wrote: > So now at least TWO proponents of 505 cannot successfully translate a very > simple example taken almost directly from the PEP! > > Is that REALLY a good argument for it being helpful, and not being a bug > magnet?! > > On Wed, Jul 25, 2018 at 9:57 PM Chris Angelico <ros...@gmail.com> wrote: > >> On Thu, Jul 26, 2018 at 11:45 AM, Nicholas Chammas >> <nicholas.cham...@gmail.com> wrote: >> > On Wed, Jul 25, 2018 at 9:20 PM Chris Angelico <ros...@gmail.com> >> wrote: >> >> >> >> On Thu, Jul 26, 2018 at 11:02 AM, David Mertz <me...@gnosis.cx> wrote: >> >> > That is disingenuous, I think. Can this raise an AttributeError? >> >> > >> >> > spam?.eggs?.bacon >> >> > >> >> > Of course it can! And this is exactly the pattern used in many >> examples >> >> > in >> >> > the PEP and the discussion. So the PEP would create a situation where >> >> > code >> >> > will raise AttributeError in a slightly—and subtly—different set of >> >> > circumstances than plain attribute access will. >> >> >> >> I don't understand. If it were to raise AttributeError, it would be >> >> because spam (or spam.eggs) isn't None, but doesn't have an attribute >> >> eggs (or bacon). Exactly the same as regular attribute access. How is >> >> it slightly different? Have I missed something? >> > >> > >> > That was my reaction, too. >> > >> > food = spam?.eggs?.bacon >> > >> > Can be rewritten as: >> > >> > food = spam >> > if spam is not None and spam.eggs is not None: >> > food = spam.eggs.bacon >> > >> > They both behave identically, no? Maybe I missed the point David was >> trying >> > to make. >> >> Aside from questions of repeated evaluation/assignment, yes. The broad >> semantics should be the same. >> >> (If you want to get technical, "spam" gets evaluated exactly once, >> "spam.eggs" a maximum of once, and "food" gets assigned exactly once. >> Your equivalent may evaluate and assign multiple times.) >> >> ChrisA >> _______________________________________________ >> Python-ideas mailing list >> Python-ideas@python.org >> https://mail.python.org/mailman/listinfo/python-ideas >> Code of Conduct: http://python.org/psf/codeofconduct/ >> > > > -- > Keeping medicines from the bloodstreams of the sick; food > from the bellies of the hungry; books from the hands of the > uneducated; technology from the underdeveloped; and putting > advocates of freedom in prisons. Intellectual property is > to the 21st century what the slave trade was to the 16th. > -- Keeping medicines from the bloodstreams of the sick; food from the bellies of the hungry; books from the hands of the uneducated; technology from the underdeveloped; and putting advocates of freedom in prisons. Intellectual property is to the 21st century what the slave trade was to the 16th.
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/