From what I've been told, 1% of learning C++ is learning C. 1% is learning the extra basic features. 98% is learning to use the features in a safe, maintainable way, and coping with the dark hairy corners of the language.
Learning python will teach you to write code that is safe, and maintainable. I think that if you learn python then go back to C++, then you will be able to write good C++ code. Of course, that won't mean you will understand bad C++, or C++ code that was written in a non-pythonic way.
Limits to python?
- It's interpreted, so you have to ship the source and the interpreter; and processes will take much longer to start up.
- It's not C++, so it won't play with existing C++ code.
- It's a bit slower (even if you wrap the hot loops in C).*
- It encourages you to be "pythonic", and some problems are easier if you are not "pythonic".
*Python might be faster:
- Automatic GC. C++ is only faster if it doesn't leak too much.
- Dictionaries. Lots of code runs in O(N plus a bit), rather than O(N^2) if you use a dictionary. Sure, you can use a hash table in C++, but not everbody does.
- Memory management - the python interpreter caches some of the basic data structures' memory, then reallocates them, rather than hitting the system for new memory. This reduces system calls, which is a very good thing.
- Profiling new algorithms is waaaay easier on python. In lots of problems, a better algorithm is more important than a linear speedup (which is what C++ gives you).
- If you are making a program that "only runs once" (scientific analysis, data migration, etc), then the compile-build-test cycle should be faster in python. That's what really counts ;)