On 7/19/2018 4:33 AM, Antoine Pitrou wrote:

This is adding a whole range of new operators without enough of a use
case.  It is also making code harder to read, as evaluation can stop at
any of the "?*" operators.  And it looks like noise (or like Perl 6,
which is the same).

There is a use case I sympathize with: the argument-is-None case.  For
that I would suggest a simpler form:  "A else B" which would evaluate
to A if A is not None, otherwise to B (parentheses may be mandatory).

So e.g. one of the examples would read:

      def insort_right(a, x, lo=0, hi=None):
          # ...
          hi = hi else len(a)
          # ...

I like this. (A or B) and (A and B) could now* be explained as an abbreviations of

A if A else B
A if not A else B

but with A only evaluated once, as in

tem = A; tem if tem else B
tem = A; tem if not A else B

(A if A else B) is equivalent to (A if bool(A) is not False else B)

(A else B) is then easily explained as an abbreviation of

A if A is not None else B

that only evaluates A once.


* In the future, tem if (tem := A) else B

--
Terry Jan Reedy

_______________________________________________
Python-ideas mailing list
Python-ideas@python.org
https://mail.python.org/mailman/listinfo/python-ideas
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to