Introducing Python: Modern Computing in Simple Packages (Second Edition) by Bill Lubanovic is a great first book for sharp new Python learners, those coming from another language, or rusty Python programmers who are simply looking for a solid re-introduction to the language.
If you’re completely new to programming, there are less advanced beginner resources out there. That said, if you work through it slowly, this book is still a great option if you’re confident in your ability to pick up new concepts quickly.
You may even walk away with a better fundamental understanding of Python than other learners who picked up a more basic resource. The book leaves (almost) no stone unturned when it comes to language fundamentals.
This is an excellent introduction to Python for those coming from a different language because it strikes a delicate balance between hand-holding and assumed knowledge. The author often goes deeper into the why behind language choices, unlike similar beginner resources.
It’s not dumbed-down at all which is nice for those looking to expand their horizons.
If you’re looking for a more advanced read there are better options out there, but it’s definitely enough to get you off the ground and onto writing useful programs.
I picked this book up as a re-introduction to Python. I took a short break from programming last year and needed a quick way to fill in the gaps of knowledge I lost along the way.
Mainly, I was looking for something that wasn’t too basic or hand-holdy. To my delight, Introducing Python turned out to be quite skimmable which made it easy to skip over concepts that I had down already.
In my opinion, it’s perfect for this third demographic of programmers.
The first half of the book covers the foundational concepts of the Python language, syntax, and style. It’s a necessary primer to prepare you for the back half of the book, which dives deeper into more practical, modern usages of Python in a real-world setting.
In short: business in the front, party in the back.
I love how it was set up this way. Most programming books are either too robotic and boring or overly practical to the extent that they fail to address concepts that are crucial to applying the language in practice.
You can explore the full table of contents and a preview on Amazon.
The book comes off as quite intimidating at first due to its length. Don’t let that deter you from giving it a shot. It reads quickly relative to what you would normally expect from a 500+ page read. Most of the length can be attributed to the formatting and the sheer quantity of code examples.
What’s nice about this book is you can skim back over chapters easily to review them or skip over concepts you already know entirely. There are so many code samples that it almost doubles as a cheat sheet or manual (despite being designed as instructional material).
The majority of examples in the first half of the book (or most of it, for that matter) are executed in the Python shell/interpreter. This is useful for pacing due to the vast amount of examples.
If you’re reading it in PDF form it can be a bit cumbersome to copy multi-line programs into your shell. I have a feeling this is by design. The author wants you to write out the examples yourself to help with muscle memory, a concept I’m completely on board with.
I’m not a Python expert yet, but based on what I know currently, everything seems to align with modern best practices. The examples were easy to understand, and each chapter has exercises at the end to help you practice.
This is far from a boring read. The author is an excellent writer and, to my surprise, quite funny. Unlike similar textbook-style programming books, this one has quite a bit of charm to it without sacrificing practicality.
My only gripe with the writing style is that some of the contexts used in the examples were foreign to me, which may make it difficult for non-native English speakers. Perhaps it was a generational barrier.
If you like cheesy jokes you’ll love it. If you don’t, you’ll find the author’s attempts at being funny hilarious in their own right. He’ll have your attention either way.
Make sure to pick up the second edition of the book which is based on a more recent Python version (3.7) than the first.
The current Python version as of writing is 3.9, but the author does touch upon some concepts from 3.8. The code itself was tested in 3.7. Nothing too critical for beginners was added in 3.8 or 3.9, so don’t worry about it too much.
The second version also has some additional chapters and useful edits that add value to the material. The author did a great job of incorporating the small handful of changes between Python versions.
I do recommend glossing over the official Python release notes afterward just to get familiar with some of the newer features that aren’t covered.
I try not to read a book without applying the concepts in practice repeatedly for an extended period. That rings especially true if this is going to be your first exposure to programming in general.
Get some fully functional projects under your belt, then look for your next read to level up your skills. Otherwise, you may just burn out (I’m speaking from experience).
The next book I recommend you take a look at is Effective Python: 90 Specific Ways to Write Better Python by Brett Slatkin. This one in particular focuses heavily on writing Pythonic code by avoiding anti-patterns that those new to the language often fall victim to.
Once you’re ready, an upper-intermediate level Python book, also published by O’Reilly, is Fluent Python: Clean, Concise, and Effective Programming by Luciano Ramalho. This one requires a good amount of Python experience to understand as it focused heaviliy on metaprogramming.
Keep in mind, that the second, more relevant edition is expected to be released at some point in 2022 so that may be something worth looking forward to. I haven’t personally read it all the way through yet but it comes highly recommended in Python circles.