For those of us who learned it 15-20 years ago, the core-language classics were Lutz, “Learning Python” and “Programming Python”. There are probably a million better options online now, and I’ll leave it to younger people to point them out.
Other core-language books include Ramhalo, “Fluent Python”, Reitz & Schlusser, “Hitchhiker’s Guide to Python” and Danjou, “Serious Python”, all aimed at mid-level programmers looking to improve.
It’s important to remember that core Python is not a data science language! It was originally created as a glue language (competing with shell and Perl) to help sysadmins keep their servers running, and now it is a glue language for a set of third-party packages that contain all the science capability. As Bjarne Stroustrup pointed out in his discussion yesterday, these are largely written in C/C++: numpy, scipy, jupyter, pandas, matplotlib, seaborn, numba, scikit-learn, tensorflow, pytorch… All created by different project teams with different release schedules.
I found VanderPlas, “Python Data Science Handbook” valuable. Available in print but also in Jupyter notebook format on GitHub. A 2nd edition published recently, but early reviews are mixed (terrible for the Kindle edition).
People who complain about Python being slow are often using it wrongly. Gorelick & Ozsvald, “High Performance Python” may be instructive.
For testing, Okken, “Python Testing with pytest” is a standard.
For ML, options include Chollet, “Deep Learning with Python” for TensorFlow and Stevens et al, “Deep Learning with PyTorch” for an alternative popular package.