Choose by language and teaching format
The Craft of Self-Teaching is Li Xiaolai's Chinese-language book about learning independently through Python programming. The README has a short English opening, but it does not offer an English edition of the explanatory chapters. Readers who need sustained instruction in English should choose another teaching text.
For readers comfortable with Chinese, the contents combine programming with the habits of learning. Values, functions and files sit alongside chapters on patience, deliberate practice and handling unfamiliar references. Later chapters cover classes and other advanced material. That combination makes the book worth sampling if you want help continuing through confusing exercises.
The notebook format lets readers work with code beside the lessons. The README also links to a Markdown version, so you can sample the explanations before setting up an interactive environment.
What happened when we ran it
At commit 987a8e8 on October 28, 2026, our sandbox installation succeeded in 6 seconds, recording 35 dependencies and 37 MB on disk. The build step succeeded in a recorded 0 seconds. No test script or target was found, so tests were skipped. The pip-audit result was 0 known vulnerabilities.
The recorded sandbox configuration was 3 CPUs, 8 GB RAM and image label ghcr.io/astral-sh/uv:python3.12-bookworm. Actual runtime and operating-system versions require the raw toolchain logs; the image label does not verify them.
The checkout contained 228 files, approximately 60 lines counted as source and 28 MB. For a notebook book, that source-line count is a poor guide to the amount of reading or executable material. The scan reported 0 CI workflow files, no Dockerfile and no tests directory.
These results establish successful dependency preparation and the recorded audit outcome. They do not establish that every notebook executes correctly, that the documented Anaconda route works today or that the book improves learning outcomes. Those questions were not assessed.
Sample the leap-year exercise
The test-driven development chapter states expected leap-year results before completing the function. It then builds the implementation in stages, including the exception for years divisible by 100 but not by 400.
The exercise gives a beginner a way to reason about expected answers before working through the syntax. The chapter later discusses exceptions and points readers toward unittest and doctest. It also acknowledges that practical test-driven development uses more substantial tools than this introductory example.
Use this chapter as a reading trial: write down the expected results, explain the century exception and then attempt the function before consulting the implementation. This is a suggested exercise, not an additional test performed for this review. The chapter's examples are separate from the repository-wide test step that our run skipped.
Check the appendix before copying its configuration
The Jupyter appendix describes an Anaconda route and includes a Mac installer filename dated 2018.12. It explains launching Jupyter locally and keeping the terminal open. It also contains a note about enabling the Extension Manager in JupyterLab 3.x and 4.x, so the dated installer should not be treated as proof that every part of the appendix is equally old.
One configuration suggestion deserves particular care: the appendix proposes setting c.NotebookApp.token = '' to avoid copying a token between browsers. Retain authentication rather than copying that setting. The review did not test this configuration or establish how its examples behave with a current installation.
Our measured dependency footprint does not describe the separate Anaconda installation. Check the installation guidance for your platform before following that route, and keep your exercise copies separate from the original notebooks.
The README states a CC-BY-NC-ND license for the book. Review those terms before translating, adapting or redistributing the material.
Repository activity does not establish teaching support
The supplied repository metadata records the last push as May 20, 2026. Release status could not be established from the supplied lookup. There is no supplied issues listing that establishes subsequent discussion or support activity.
The push date alone does not establish abandonment or responsive teaching support. Support responsiveness and full-notebook compatibility remain unassessed. For a reading decision, sampling an explanation and checking the setup instructions provide more direct evidence of suitability.
Compare the learning formats
Think Python provides Jupyter notebooks and supporting material for Allen B. Downey's third edition. Its README links to an online book with links to run each chapter on Colab. Choose it when that book-and-Colab workflow suits you.
learn-python groups Python scripts by topic, with explanations and assertions. Choose it when you want to inspect and modify examples or revisit Python syntax. Neither alternative received comparative setup or learning-outcome testing in the supplied evidence.
The documentation score is an editorial assessment of the supplied reading path. On this scale, 1 means an essential reading path is missing, 3 means the main path is explained with material caveats, and 5 requires detailed guidance that has also been independently exercised. Scores 2 and 4 fall between those boundaries. This book earns 3: the contents, chapters and appendix explain how to begin, but the installer and authentication examples need care. Setup ease, community support and maturity remain unassessed.
Start with the leap-year chapter. If you can follow its Chinese explanation and reason through the expected answers, continue with the book. If language interrupts the exercise, choose a teaching text you can read comfortably.

