Python for Everyone, 3e is an introduction to programming designed to serve a wide range of student interests and abilities, focused on the essentials, and on effective learning. It is suitable for a first course in programming for computer scientists, engineers, and students in other disciplines. The interactive eText requires no prior programming experience and only a modest amount of high school algebra. Objects are used where appropriate in early chapters and students start designing and implementing their own classes in Chapter 9. Practice makes perfect, so each section contains numerous exercises that ask students to carry out progressively more complex tasks: trace code and understand its effects, produce program snippets from prepared parts, and complete simple programs. All eText sections include activities to help students practice programming and build confidence. The interactive practice and review is complemented by open-ended review exercises, programming exercises, and projects. The Enhanced E-Text is also available bundled with an abridged print companion (9781119580928).
This is an excellent introduction to computer science through Python. Instead of focusing on learning Python by itself, it can easily be used as a stepping stone into other strongly-typed languages and object-oriented programming. If you want to focus on Python tricks and shortcuts, this is not the book for you. If you want a college level intro into programming and computer science that uses Python, then this is a great resource and textbook.
This was my book for an introduction to software development. It gave practical examples as well as the history behind python. I am a "why" type of learner, and this book gives great examples of why python is written the way it is.