[Tutor] Comprehensive textbook (not for beginners)

Mats Wichmann mats at wichmann.us
Sat Sep 5 11:59:42 EDT 2020


On 9/5/20 2:37 AM, Lilia Georgieva wrote:
> Hi,
> 
> I am looking for a good detailed textbook/book/course on Python3  which
> goes beyond the basics and covers object-oriented programming as well as
> data structures and algorithms.
> 
> I have quite a few textbooks (Headfirst Python, Python for Rookies, Fluent
> python), but they cover well the basics of the language and do not go much
> further.
> 
> Any advice would be appreciated

I'll toss in a couple of notes here, without directly answering.

Mostly the books that claim to be "advanced" aren't really much more
advanced than the beginning books. They choose to spend more depth on
certain topics, though. Instead, further steps usually veer off into
topic specialization, like "Python for Data Science", etc. Which usually
doesn't give you that much more advanced Python, it must be said.

There are so many Python books it's hard to make recommendations -
partly because there's no chance anybody has personally seen more than a
few of them. So you end up having to make choices based on reputation -
of publishers/authors, from reviews, etc. For example, you mention
Fluent Python, which (a) comes from O'Reilly, which has quite high
standards for their books, and (b) is written by Luciano Ramalho, whom I
know (know of, never met in person), and both are points in favor. Some
book publishers are not producing high-quality, professionally-reviewed
content and I'd steer clear absent some specific reviews saying they've
broken their pattern with a particular book (I don't want to publicly
shame anyone so not calling out by name). It's hard to think you could
go wrong with a Mark Lutz book, _and_ they're published by O'Reilly.
Programming Python still sits on my shelf, complete with the little
banner "2nd Edition - Covers Python 2", to tell you how old that one is.
Haven't opened it for well over a decade.

It would perhaps be remiss to leave out that there's a self-curated list
of Python books on the Python wiki:

https://wiki.python.org/moin/PythonBooks

and there is a link there to a list that claims "advanced".

When I was new to Python, at the "Turn of the Century" (that makes one
feel old, saying that! Programming Python 2:e has a 2001 publication
date), I used to tell people the great thing about Python was you could
be productive with Python without using the object-oriented parts, and
then learn those as needed.  In the intervening years, the focus of
Python itself has sharpened and I've learned many things and I consider
that to have been a rather dumb statement I used to make!

Instead, Python is at its core an object-oriented programming language,
and you're working with objects with everything you do.  What you don't
have to do, unlike many languages that are actually called
object-oriented languages, is "write classes" to get any work done at
all (e.g. Java). You *can* create your own datatypes, if you find the
ones in the language, standard library, and hundreds of thousands of
add-on packages don't suit your problems, or you just want to use a data
type to group things for easier reference. The Python class definition
is nothing more than "create your own datatype" (aside: you can, in
fact, create them with the "type" function instead, "class" is like a
slightly higher-level abstraction).

Everybody has their own learning style, and for some reading a text
works best, for some watching video tutorials or an in-person trainer
works best, etc.  What I believe most people end up doing these days is
learn enough to get going, then explore, whether that's out of interest
or by being forced to through a project, and look for information to fit
the specific issues as they come up - as in "search on StackOverflow",
or the perhaps-archaic "look it up in the reference manual".  I'm not
sure this kind of exception-based learning is the most efficient
approach (as opposed to a systematic deep dive), but it does have the
advantage that you're more likely to retain something you actually
needed at the moment you read about it, because you immediately put it
into practice.

Good luck finding the book you need!


More information about the Tutor mailing list