I looked at the PEP for None-aware operators and I really feel like they miss one important detail of Python's data model:

>>> {}[0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 0
>>> [][0]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: list index out of range

that is: missing items raise, rather than being None. as such I feel like None-aware operators would encourage ppl to put None everywhere, which from what I can tell, goes completely against Python's data model.

however, exception-aware operators could be a potential alternative that:

1. works with existing code (no need to go shoving None everywhere)
2. works in lambdas
3. ends up being more useful?

I don't know what the potential syntax would look like. perhaps something along the lines of:

exception-raising-expression ?: value-if-exception-raised

or:

exception-raising-expression ? (IndexError, KeyError, Etc) : value-if-exception-raised

but, thoughts?
_______________________________________________
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/7OHT3BJNVQSP45K5UAOEZGEJ6PDQXBAY/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to