They're not used for the same kinds of things, in general. Python is very useful for prototyping since it is so simple, but isn't always the best choice when speed is an important factor, since it is an interpreted language. C++ can be heavily optimized, but as you said might be much more difficult to write and understand.
If you want to do systems or applications programming, you should learn C++. If you are programming for fun and leisure, or to solve problems like at http://projecteuler.net/ then Python is a good choice too.
I personally also recommend learning C/C++ first if you want to get very serious about programming, because it teaches you the important concept of memory management, which might be overlooked in managed languages.