Learning Python
===============
Beginner
--------
Learn Python Interactive Tutorial
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Learnpython.org is an easy non-intimidating way to get introduced to python. The website takes the same approach used on the popular `Try Ruby `_ website, it has an interactive python interpreter built into the site that allows you to go through the lessons without having to install Python locally.
`Learn Python `_
Learn Python the Hard Way
~~~~~~~~~~~~~~~~~~~~~~~~~
This is an excellent beginner programmer's guide to Python. It covers "hello world" from the console to the web.
`Learn Python the Hard Way `_
Crash into Python
~~~~~~~~~~~~~~~~~
Also known as *Python for Programmers with 3 Hours*, this guide gives experienced developers from other languages a crash course on Python.
`Crash into Python `_
Dive Into Python 3
~~~~~~~~~~~~~~~~~~
Dive Into Python 3 is a good book for those ready to jump in to Python 3. It's a
good read if you are moving from Python 2 to 3 or if you already have some
experience programming in another language.
`Dive Into Python 3 `_
Think Python: How to Think Like a Computer Scientist
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Think Python attempts to give an introduction to basic concepts in computer science through the
use of the python language. The focus was to create a book with plenty of exercises, minimal jargon and
a section in each chapter devoted to the subject of debugging.
While exploring the various features available in the python language the author weaves in various design
patterns and best practices.
The book also includes several case studies which have the reader explore the topics discussed in the book
in greater detail by applying those topics to real-world examples. Case studies include assignments in GUI
and Markov Analysis.
`Think Python `_
Python Koans
~~~~~~~~~~~~
Python Koans is a port of Edgecase's Ruby Koans. It uses a test-driven approach, q.v. TEST DRIVEN DESIGN SECTION
to provide an interactive
tutorial teaching basic python concepts. By fixing assertion statements that fail in a test script, this
provides sequential steps to learning python.
For those used to languages and figuring out puzzles on their own, this can be a fun, attractive option.
For those new to python and programming, having an additional resource or reference will be helpful.
`Python Koans `_
More information about test driven development can be found at these resources:
`Test Driven Development `
Advanced
--------
Pro Python
~~~~~~~~~~
.. todo:: Write about `Pro Python `_
Expert Python Programming
~~~~~~~~~~~~~~~~~~~~~~~~~
Expert Python Programming deals with best practices in programming Python and
is focused on the more advanced crowd.
It starts with topics like decorators (with caching, proxy, and context manager
case-studies), method resolution order, using super() and meta-programming, and
general PEP8 best practices.
It has a detailed, multi-chapter case study on writing and releasing a package
and eventually an application, including a chapter on using zc.buildout. Later
chapters detail best practices with writing documentation, test-driven
development, version control, and optimization/profiling.
`Expert Python Programming `_
References
----------
Python in a Nutshell
~~~~~~~~~~~~~~~~~~~~
Python in a Nutshell, written by Alex Martelli, covers most cross-platform python's usage,
from its syntax to built-in libraries to advanced topics such as writing C extensions.