Python is a great and versatile language, but it’s not the best solution for everything. Here are a couple examples of areas where Python might not be the best choice or the most common choice for real-world commercial applications.
Mobile app development
While you certainly can develop mobile apps for Python, you’ll need to make use of third-party layers to make them work across Android and iOS phones. These extra layers can make Python apps less efficient, which means Python isn’t always the best choice for mobile app development (although depending on your specific app’s requirements, it might be fine).
If you are interested in developing mobile apps with Python, a variety of options exist. One of the most popular is the Kivy framework.
Of course, you can always use the web development power of Python together with a framework like Django to make web apps that work well in mobile browsers, too.
Things that require high speed or high memory usage
In part because Python is a high-level language, it’s not always the fastest or most efficient option. For many use cases, this distinction won’t matter — you’ll never notice the extra tenth of a millisecond you might gain from using C++. But if, for example, you’re working on a high-speed 3D-rendered video game, Python’s speed and memory constraints will probably be too limiting.
Similarly, if you’re doing something like writing an operating system, Python isn’t a great choice because it’s inefficiencies will be layered on top of each other as users run programs within the main program that is the OS.
When high speed and memory performance is critical, Python probably isn’t the best option. However, in many cases — including all of the use cases described above — the minor sacrifices we make in speed and efficiency by using Python are far outweighed by the conveniences it offers.