.. _python_learning_resources: ================================ Useful Python Learning Resources ================================ In addition to the material we cover in class, there are numerous online resources to help a newcomer get to know Python. The following list represents the best-known and best-regarded of the breed. If you are itching for a bit more work on your Python chops, you should try these out. Python Language Resources ========================== As a Python programmer, you'll want to keep a bookmark pointed at the official Python documentation (https://docs.python.org/3/), especially the documentation for the standard library (https://docs.python.org/3/library/index.html). However, there are a number of additional resources you can (and should) use to help build your Python chops. For the beginner ----------------- Getting started tutorials ......................... * **Jessica McKeller's begining tutorial** (Video) https://www.youtube.com/watch?v=MirG-vJOg04 * **The Python Tutorial** (https://docs.python.org/3/tutorial/): This is the official tutorial from the Python website. No more authoritative source is available. * **Code Academy Python Track** (http://www.codecademy.com/tracks/python): Often cited as a great resource, this site offers an entertaining and engaging approach and in-browser work. * **Learn Python the Hard Way** (https://learnpythonthehardway.org/python3/): Solid and gradual. This course offers a great foundation for folks who have never programmed in any language before. Complete Books / Series ....................... * **Dive Into Python 3** (https://www.apress.com/us/book/9781430224150): The updated version of a classic. This book offers an introduction to Python aimed at the student who has experience programming in another language. It used to be available free online -- you can still find PDF copies on the web. * **Python for You and Me** (http://pymbook.readthedocs.org/en/latest/): Simple and clear. This is a great book for absolute newcomers, or to keep as a quick reference as you get used to the language. * **Think Python** (http://greenteapress.com/thinkpython2/html/index.html): Methodical and complete. This book offers a very "computer science-style" introduction to Python. It is really an intro to Python *in the service of* Computer Science, though, so while helpful for the absolute newcomer, it isn't quite as "pythonic" as it might be. * **Core Python Programming** (http://corepython.com/): Only available as a dead trees version, but if you like to have book to hold in your hands anyway, this is the best textbook style introduction out there. It starts from the beginning, but gets into the full language. Published in 2009, but still in print, with updated appendixes available for new language features. * **Python 101** (https://leanpub.com/python_101) Available as a reasonably priced ebook. This is a new one from a popular blogger about Python. Lots of practical examples. Also available as a Kindle book: http://www.amazon.com/Python-101-Michael-Driscoll-ebook/dp/B00KQTFHNK Python Tutor ............ Python Tutor is a really nifty site that lets you write and run Python code, and visualize what is going on as it runs. Really gives you idea what is going on under the hood, with the stack, etc. http://pythontutor.com/ Next Steps ---------- Web sites / services: ..................... * **New Coder** (http://newcoder.io): advertised as "Five lifejackets to throw to the new coder", this site offers five very interesting tutorials written in an engaging style. Not an introduction. More a second step. * **OpenHatch** (https://openhatch.org/wiki/Intermediate_Python_Workshop/Projects): The Open Hatch project offers a number of workshops with well-paced intermediate tutorials for Python programming. A great place to go once you have the basics down and are ready for more challenging work. Advanced Books .............. * **The Python Cookbook** (http://chimera.labs.oreilly.com/books/1230000000393): The Python Cookbook provides practical solutions to various programming tasks, along with excellent explanations of how they work. Written by David Beazley -- Python author and instructor extraordinaire. Also available fully online: (http://chimera.labs.oreilly.com/books/1230000000393/index.html) * **Fluent Python** (http://shop.oreilly.com/product/0636920032519.do): Fluent Python is an excellent deeper dive into the inner workings of Python. Written for folks that already understand the basics of Python, it goes provides explainations of the more advanced topics in Python. If we were going to use a textbook for an advanced Python class, this would be it. Evaluating Your Options ----------------------------- The blurbs above are short descriptions of the material in each resource. We've drawn them both from our own usage of the various tools, and from a wonderful set of online reviews: (http://planningadinner.blogspot.com/search/label/So%20you%20want%20to%20learn%20Python.%20What%27s%20next%3F) done by Marta Maria Casetti on her blog, "Planning a Dinner" (http://planningadinner.blogspot.com/). The poster she presented at PyCon 2014 (http://planningadinner.blogspot.com/2014/04/the-poster.html) as a result of that research offers some great hints about the aspects of Python programming best covered by each resource. I would urge any new student of Python to take the time to look over this poster to help determine the best path forward for themselves.