Given the arguments you've raised, I am now inclined to agree with you. However, for completeness of the discussion, I want to indicate the primary intended use case:
def fn(x=None): if not x: x = some_complex_or_runtime_dependent_result() For me this appears quite frequently. Admittedly the condition should likely be `x is None`. On 26 March 2018 at 14:41, Steven D'Aprano <st...@pearwood.info> wrote: > On Mon, Mar 26, 2018 at 01:48:34PM +0100, Cammil Taank wrote: > > Hi, > > > > I find a common idiom in Python is: > > > > x = x or 'some other value' > > I don't find it very common. I don't think I've ever used it or seen it. > I've occasionally used: > > spam = eggs or 'something' > > but mostly I use: > > result = function(eggs or 'something') > > (and even that is quite unusual). But others may use it more often. > > > > This is highly reminiscent of the problem inplace operators solve. > > Not really: the other augmented operators all connect to ordinary > operators that can be overloaded. But `or` is special, it's a > short-cutting operator that is treated specially by the interpreter. > > And even if x is mutable, there's no way to make this an in-place > operation. After `x = x or y`, there are only two possibilities: > > - x is still a reference to whatever it was before the operation; > - or x now refers to the same object as y. > > So this is very different behaviour to (say) += and the other augmented > operators. > > > > Would it be a good idea to consider an inplace operator for this, > perhaps: > > > > x or= 'some other value' > > Mixing a keyword with a symbol like that looks really weird. > > Others may disagree, but to me, this pattern isn't common enough to > justify specialist syntax. I might be a little less negative if the > syntax didn't look so strange to me. > > But only a little. > > > -- > Steve > _______________________________________________ > Python-ideas mailing list > Python-ideas@python.org > https://mail.python.org/mailman/listinfo/python-ideas > Code of Conduct: http://python.org/psf/codeofconduct/ >
_______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/