Is there any expression in python that similar to ruby's ||=
===

I came across an interesting expression in Ruby:

    a ||= "new"

It means that if a is not defined, the "new" value will be assigned to a; otherwise, a will be the same as it is. It is useful when doing some DB query. If the value is set, I don't want to fire another DB query.

So I tried the similar mindset in Python:

    a = a if a is not None else "new"

It failed. I think that it because you cannot do "a = a" in Python, if a is not defined.

So the solutions that I can come out are checking locals() and globals(), or using try...except expression:

    myVar = myVar if 'myVar' in locals() and 'myVar' in globals() else "new"

or

    try:
        myVar
    except NameError:
        myVar = None

    myVar = myVar if myVar else "new"

As we can see, the solutions are not that elegant. So I'd like to ask, is there any better way of doing this?

