I need to print some stuff only when a boolean variable is set to True
. So, after looking at this, I tried with a simple example:
>>> a = 100 >>> b = True >>> print a if b File "<stdin>", line 1 print a if b ^ SyntaxError: invalid syntax
Same thing if I write print a if b==True
.
What am I missing here?
Since it is an expression, one can't use any statement inside it.
Syntax of Inline if-else in Python To write an Inline if-else statement we have to follow this syntax. In this syntax, <expression1> will be returned or executed if the condition is true, or else <expression2> will be returned or executed, and these conditions are always executed from left to right.
It is commonly referred to as the conditional operator, inline if (iif), or ternary if. An expression a ? b : c evaluates to b if the value of a is true, and otherwise to c . One can read it aloud as "if a then b otherwise c".
Python does not have a trailing if
statement.
There are two kinds of if
in Python:
if
statement:
if condition: statement if condition: block
if
expression (introduced in Python 2.5)
expression_if_true if condition else expression_if_false
And note, that both print a
and b = a
are statements. Only the a
part is an expression. So if you write
print a if b else 0
it means
print (a if b else 0)
and similarly when you write
x = a if b else 0
it means
x = (a if b else 0)
Now what would it print/assign if there was no else
clause? The print/assignment is still there.
And note, that if you don't want it to be there, you can always write the regular if
statement on a single line, though it's less readable and there is really no reason to avoid the two-line variant.
Inline if-else EXPRESSION must always contain else clause, e.g:
a = 1 if b else 0
If you want to leave your 'a' variable value unchanged - assing old 'a' value (else is still required by syntax demands):
a = 1 if b else a
This piece of code leaves a unchanged when b turns to be False.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With