I know that Python is an interpreted language and that c++ is a compiled one, or at least I like to think that I've understood some of their differences.
There is no such thing as an interpreted or a compiled language. Those terms are not even wrong, they are nonsensical.
Interpretation and compilation are traits of an interpreter or compiler (duh!), not a language.
Case in point: every currently existing Python implementation has at least one compiler. No existing Python implementation interprets Python, ever. OTOH, there are interpreters for C++.
Although C++ is apparently faster than python, what if you compiled Python code to an exe: Would they be the same speed or will C++ still be much faster?
That depends on the C++ code, the Python code, the C++ compiler, and the Python compiler.
If your code is badly written and uses sub-optimal algorithms, then it will be slow, no matter whether it is Python code or C++ code and whether it is compiled or not.
If your compiler does not optimize the code properly, then it will be slow, no matter whether it is a Python or C++ compiler.
Given two equally well implemented programs in two different languages and two equally well adapted execution environments, the performance will depend purely on the amount of money and resources poured into the compiler (particularly the optimizer). The language is irrelevant.
The Lisp and Smalltalk communities have figured out how to make dynamic languages fast decades ago, it's just that the communities of newer dynamic languages have chosen to ignore these results until very recently, and are now playing catch-up with other communities that have a 50 year head-start. (E.g. V8 was written by a couple of Smalltalk VM developers.)