Python 201: Intermediate Python by Michael Driscoll
Python 201 is the sequel to my first book, Python 101. If you already know the basics of Python and now you want to go to the next level, then this is the book for you! This book is for intermediate level Python programmers only. There won't be any beginner chapters here. This book is based on Python 3. You will learn about exciting topics such as working with descriptors, super, context managers, iterators and much, much more!