4

In Javascript I can do this:

function A(x) { return x || 3; }

This returns 3 if x is a "non-truthful" value like 0, null, false, and it returns x otherwise. This is useful for empty arguments, e.g. I can do A() and it will evaluate as 3.

Does Python have an equivalent? I guess I could make one out of the ternary operator a if b else c but was wondering what people use for this.

Community
  • 1
  • 1
Jason S
  • 171,795
  • 155
  • 551
  • 900

2 Answers2

10

You can use or to do the same thing but you have to be careful because some unexpected things can be considered False in that arrangement. Just make sure you want this behavior if you choose to do it that way:

>>> "" or 1
1
>>> " " or 1
' '
>>> 0 or 1
1
>>> 10 or 1
10
>>> ['a', 'b', 'c'] or 1
['a', 'b', 'c']
>>> [] or 1
1
>>> None or 1
1
Daniel DiPaolo
  • 51,147
  • 13
  • 111
  • 112
5

The answer is or:

def A(x):
    return x or 3
Konrad Rudolph
  • 482,603
  • 120
  • 884
  • 1,141