There are a lot of explanations online for distinguishing those two concepts. As in the answers of this question says,
- Expressions only contain identifiers, literals and operators, where operators include arithmetic and boolean operators, the function call operator
()
the subscription operator[]
and similar, and can be reduced to some kind of “value”, which can be any Python object.- Statements (see 1, 2), on the other hand, are everything that can make up a line (or several lines) of Python code. Note that expressions are statements as well.
It is quite confusing to me actually. So I find the simplest way to distinguish those two is that expressions are just a part of statements. An expression represents some operation, but it cannot be executed solely by the compiler.