Ricky Robinson Ricky Robinson - 5 months ago 68x
Python Question

How to write inline if statement for print?

I need to print some stuff only when a boolean variable is set to

. 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?


Python does not have a trailing if statement.

There are two kinds of if in Python:

  1. if statement:

    if condition: statement
    if condition:
  2. 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.