There are syntax errors that will prevent your Python code from running

examples/basics/syntax_error.py
x = 2
print(x)

if x > 3

examples/basics/syntax_error.py.out
File "examples/other/syntax_error.py", line 4
    if x > 3
           ^
SyntaxError: invalid syntax

There are other syntax-like errors that will be only caught during execution

examples/basics/compile.py
from __future__ import print_function

x = 2
print(x)
print(y)
print(42)

examples/basics/compile.py.out
2
Traceback (most recent call last):
  File "compile.py", line 5, in <module>
    print y
NameError: name 'y' is not defined

Python code is first compiled to bytecode and then interpreted. CPython is both the compiler and the interpreter. Jython and IronPython are mostly just compiler to JVM and CLR respectively.