do you know if Python supports some keyword or expression like in C++ to return values based on if condition, all in the same line (The C++ if expressed with the question mark ?)
// C++
value = ( a > 10 ? b : c )
-
5That C++ operator is called the "conditional operator" or the "ternary operator".Roger Pate– Roger Pate2010年02月03日 12:47:24 +00:00Commented Feb 3, 2010 at 12:47
2 Answers 2
value = b if a > 10 else c
For Python 2.4 and lower you would have to do something like the following, although the semantics isn't identical as the short circuiting effect is lost:
value = [c, b][a > 10]
There's also another hack using 'and ... or' but it's best to not use it as it has an undesirable behaviour in some situations that can lead to a hard to find bug. I won't even write the hack here as I think it's best not to use it, but you can read about it on Wikipedia if you want.
5 Comments
test ? a : b. The reasons cited for its rejection are weak.simple is the best and works in every version.
if a>10:
value="b"
else:
value="c"
1 Comment
if a then b else c and the functional immediate form b if a else c are brain bendingly inverted relative to each other (Python's inverted if is backwards from nearly every other programming language's immediate if 😭).