[Python-ideas] Null coalescing operators
Erik
python at lucidity.plus.com
Sat Sep 19 00:56:40 CEST 2015
On 18/09/15 23:37, Chris Angelico wrote:
> Python generally doesn't special-case None, so having a bit of magic
> that works only on that one object seems a little odd.
So the answer here is to introduce a "magic" hook that None can make use
of (but also other classes). I can't think of an appropriate word, so
I'll use "foo" to keep it suitably abstract.
If the foo operator uses the magic method "__foo__" to mean "return an
object to be used in place of the operand should it be considered ...
false? [or some other definition - I'm not sure]" then any class can
implement that method to return an appropriate proxy object.
If that was a postfix operator which has a high precedence, then:
bar = foo?
bar.isoformat()
and the original syntax suggestion:
bar = foo?.isoformat()
... are equivalent. "?." is not a new operator. "?" is. This is
essentially a slight refinement of Chris's case 3 -
> 3) Add another case: func?(args) evaluates func, and if it's None,
> evaluates to None without calling anything.
[...]
> Option 3 requires a bit more protection, but is completely explicit.
> It would also have use in other situations. Personally, I support that
> option; it maintains all the identities, is explicit that calling None
> will yield None, and doesn't need any magic special cases. It does add
> another marker, though:
E.
More information about the Python-ideas
mailing list