If Python does not have a ternary
conditional operator, is it possible to simulate one using other language
constructs?
Sunday, 29 October 2017
Does Python have a ternary conditional operator?
Yes, it
was rel="noreferrer" title="[Python-Dev] Conditional Expression
Resolution">added in version 2.5. The expression syntax
is:
a if condition else
b
First
condition
is evaluated, then exactly one of either
a
or b
is evaluated and returned based
on the title="Boolean data type">Boolean value of
condition
. If condition
evaluates to
True
, then a
is evaluated and returned
but b
is ignored, or else when b
is
evaluated and returned but a
is
ignored.
This allows short-circuiting because
when condition
is true only a
is
evaluated and b
is not evaluated at all, but when
condition
is false only b
is evaluated
and a
is not evaluated at
all.
For
example:
>>>
'true' if True else 'false'
'true'
>>> 'true' if False else
'false'
'false'
Note
that conditionals are an expression, not a
statement. This means you can't use assignment statements or
pass
or other statements within a
conditional
expression:
>>>
pass if False else x = 3
File "", line 1
pass if False else x = 3
^
SyntaxError: invalid
syntax
You can,
however, use conditional expressions to assign a variable like
so:
x = a if True else
b
Think of
the conditional expression as switching between two values. It is very useful when
you're in a 'one value or another' situation, it but doesn't do much
else.
If you need to use statements, you have to
use a normal if
statement instead
of a conditional
expression.
/>
Keep in mind that it's frowned upon by some
Pythonistas for several
reasons:
- The order of the
arguments is different from those of the classiccondition ? a :
ternary operator from many other languages (such as C, C++, Go, Perl,
b
Ruby, Java, Javascript, etc.), which may lead to bugs when people unfamiliar with
Python's "surprising" behaviour use it (they may reverse the argument
order). - Some find it "unwieldy", since it goes
contrary to the normal flow of thought (thinking of the condition first and then the
effects). - Stylistic reasons. (Although the 'inline
if
' can be really useful, and make your
script more concise, it really does complicate your
code)
If you're having
trouble remembering the order, then remember that when read aloud, you (almost) say what
you mean. For example, x = 4 if b > 8 else 9
is read aloud
as x will be 4 if b is greater than 8 otherwise
.
9
Official documentation:
php - file_get_contents shows unexpected output while reading a file
I want to output an inline jpg image as a base64 encoded string, however when I do this : $contents = file_get_contents($filename); print ...
-
I have an app which needs a login and a registration with SQLite. I have the database and a user can login and register. But i would like th...
-
I got an error in my Java program. I think this happens because of the constructor is not intialized properly. My Base class Program public ...
-
I would like to use enhanced REP MOVSB (ERMSB) to get a high bandwidth for a custom memcpy . ERMSB was introduced with the Ivy Bridge micro...
No comments:
Post a Comment