My recommendation would be dependent based on what you already know. If you’re not currently familiar with OOP (Object-Oriented Programming), that’s much more fundamental and important to learn before delving too much into Python, as it’s one of the major languages that follows the OOP paradigm. Udacity provides a free course on this with respect to Python: https://www.udacity.com/course/programming-foundations-with-python--ud036
After learning OOP principles, you should also learn data structures & algorithms, if you’re not familiar with those. This free Coursera specialization is a very basic intro to data structures: https://www.coursera.org/learn/python
If you already have basic knowledge of data structures though, and want to get into something more advanced and comprehensive, this is one of the best resources through which you can learn all of the data structure and algorithm-related topics that you’ll need to know for any kind of software engineering position (not just web development): http://interactivepython.org/courselib/static/pythonds/index.html
I recommend doing the previously-mentioned resources first, because you should learn the higher-level concepts first, before going into Python proper. Once you learn the concepts that apply to every language, and especially every object-oriented language, it’ll accelerate your learning of Python.
I usually don’t recommend MOOCs, especially the ones on Udemy, because they’re not very fast-paced, and it can be a major time investment to get through them. I’m much more inclined to recommend printed or e-books, because it’s possible to get through a book much faster than a MOOC, and the average book is much more comprehensive than the best MOOC. That said, once you learn the high-level concepts (OOP and data structures/algorithms), these are what I’d recommend:
MOOC route: Jose Portilla’s Complete Python Bootcamp on Udemy if you have to go this route (I’ve done part of this course and he’s definitely one of the better instructors on Udemy—the only reason I haven’t done the whole course is because I haven’t focused any time on Python in recent years)
Book route: I recommend doing these in order, based on your level of knowledge
- Think Python (relative beginner level) (free): http://greenteapress.com/thinkpython/thinkpython.pdf
This book covers all the Python syntax and data structures that every Python programmer should know, and how to use them. If there’s only book that you do, make it this one—it’s not too long and covers only the most essential Python concepts that you should know.
- The Quick Python Book (intermediate) ($25): https://www.amazon.com/dp/193518220X/
Some of this book will be review of material in the prior book, but it goes into more depth and is a natural progression to level up.
- Python Crash Course (intermediate) ($27): https://www.amazon.com/Python-Crash-Course-Hands-Project-Based/dp/1593276036/
You can skip (or skim) Part 1 of this book because it’ll be re-hashing the material in the previous two books. At this point you should be coding in Python as much as possible, and this book provides a few projects that will help out in that aspect—the 3rd project is a web application that uses Django, which will be using an obselete version now, but may still be useful regardless.
- Fluent Python ($36) and Effective Python ($14) (both advanced): https://www.amazon.com/dp/1491946008/ and https://www.amazon.com/dp/0134034287/
Once you’ve been coding in Python for a while (for at least 6 months, but more realistically a year), it’ll be time to start mastering Python and learning the advanced concepts that are part of the language. Both of these books really get into the deep stuff that you should learn once you’re a professional Python developer.