
Bear in mind that these last ones are exactly equivalent to the "or" operator, as they'll use the default if you have any falsy value. variable = some_function(...) or []
Isn't that in itself a good argument in favor of (??) ? By missing to add 'is None', I would have already added a subtle bug that could be quite difficult to find. (??) could prevent that while also being more readable.
I'm actually more interested in a better idiom for non-constant function default arguments, since that's the place where this kind of thing often comes up. A nice ??= operator might help if your default is None, but if you then change the default to be object(), you can't use ??= any more. [...]
True, but from my experience 'None' is just by far the most common default. Why not improve how we handle it?