
Revision History for the First Edition • 2014-11-07: First release • 2015-02-20: Second release • 2016-02-26: Third release
My favorite introductory book (not an introduction to programming but an introduction to the language) is “Introducing Python by Lubanovic” because it’s one of the only beginner books that actually covers the python module system with enough depth and the second half of the book gives a quick overview of a lot of different python libraries.
Automate the boring stuff is a good beginner book, I like the coverage in “Introducing Python” by Lubanovic because it covers Modules and Packages for a whole chapter whereas in other books distributing your code is often a footnote. Even Fluent Python (my favorite python book) doesn’t have that great coverage of that.
Another really cool introduction that's filled with intermediate tricks is "Python Distilled" by Dave Beazley [1] (2021).
A couple of nice intermediate books:
"Intuitive Python - Productive Development for Projects that Last" by David Muller [2] (2021).
"Serious Python" by Julien Danjou [3] (2018).
References:
[0]: https://www.oreilly.com/library/view/introducing-python-2nd/...
[1]: http://www.dabeaz.com/python-distilled/
- Introducing Python, 2nd Edition by Bill Lubanovic (Beginner Level)
- Python Distilled, David M. Beazley (Beginner to Intermediate Level)
- Effective Python (2nd Edition), Brett Slatkin (Intermediate Level)
- Fluent Python (2nd Edition), Luciano Ramalho (Advanced Level)
- CPython Internals, Anthony Shaw (Advanced Level)
- Architecture Patterns with Python, Harry J. W. Percival & Bob Gregory (Advanced Level)
- Learning Scientific Programming with Python by Christian Hill - OR -
- Numerical Python: Scientific Computing and Data Science Applications with Numpy, SciPy and Matplotlib 2nd ed. Edition by Robert Johansson
AND THEN one or two of these depending upon interests:
- Understanding Optics with python
- computational physics: problem solving with Python by Paez, Landau, and Bordeianu
- Classical Mechanics: A Computational Approach with Examples Using Mathematica and Python
- Dynamical Systems with Applications using Python
Your colleague can browse through those (some of them are probably in the university library) and see which ones they prefer. Doing physics with python will make the learning process more fun, imo.
Some other books for getting a full picture of beginning and intermediate python are:
- Introducing Python by Bill Lubanovic (book might progress a little slow for your colleague but a good starter book)
- Fluent Python by Luciano Ramalho (there is a new edition coming out shortly... this is a good intermediate Python book).
- Neural Networks from Scratch in Python by Kinsley and Kukiela... you build a basic, but complete, NN library in python with optimization, back-propagation, and everything using numpy, python classes, and so forth
Other than searching for topics to learn, I also recommend these resources to learn more about python and python for physics computation:
- https://learnbyexample.github.io/py_resources/
- https://composingprograms.com/
- https://pythonprogramming.net/
- http://scipy-lectures.org and this Hacker news post and links therein: https://news.ycombinator.com/item?id=25682103
- https://pythonnumericalmethods.berkeley.edu/notebooks/Index....
- Mr. P Solver's Youtube Channel (highly recommended!)
- Freecodecamp (someone already recommended that)
