Skip to content

Instantly share code, notes, and snippets.

@jasonjohnson
Last active August 29, 2015 13:55
Show Gist options
  • Save jasonjohnson/8760012 to your computer and use it in GitHub Desktop.
Save jasonjohnson/8760012 to your computer and use it in GitHub Desktop.
A collection of resources for learning Python.

Introduction

The best way to learn Python is to write Python, but these guides will provide an excellent starting point for the library landscape, coding standards, and community. This is by no means comprehensive! Once this is in an actual repository I will gladly accept relevant modifications.

Guides

The Hitchhiker’s Guide to Python!

"This opinionated guide exists to provide both novice and expert Python developers a best-practice handbook to the installation, configuration, and usage of Python on a daily basis."

http://docs.python-guide.org/en/latest/

Google Python Style Guide

Google publishes Style Guide's for all their house languages. This provides guidance beyond community-driven guides like PEP-8.

https://google-styleguide.googlecode.com/svn/trunk/pyguide.html

Google's Python Class

"...a free class for people with a little bit of programming experience who want to learn Python. The class includes written materials, lecture videos, and lots of code exercises to practice Python coding."

https://developers.google.com/edu/python/

Dive Into Python 3

For Python 3 specifically or for adapting an existing Python 2 project. An excellent book based on Mark Pilgrim's original text.

http://www.diveintopython3.net/

Packaging

A Guide to Python packaging

"The best open source Python applications have great packaging. Learn more about what packaging is and its basic implementation. Then, go a step farther and discover versioning and distribution as they relate to packaging."

http://www.ibm.com/developerworks/library/os-pythonpackaging/index.html

Python 2.7 vs 3.3+

The Python community is slowly migrating to version 3. The transition has been ongoing for years and version 2 is still very much a part of any Python developer's daily life. Understanding all of the differences between the two versions isn't critical to your success but it will help when it comes time to officially support a newer version or deprecate an old one.

As you can see, a huge number of libraries have already adapted to Python 3's changes:

https://python3wos.appspot.com/

The community has taken steps to help developers support both sides of this divide as the migration continues. First in the form of guides like this:

http://docs.python.org/3/howto/pyporting.html

Additionally, tools like 2to3 exist to help you push your code toward newer versions mechanically:

http://docs.python.org/3.3/library/2to3.html

One of the more visible changes from 2 to 3 is how Python 3 handles strings - both of bytes and characters. The sheer amount of literature on this single subject is daunting but this will serve as a starting point:

http://www.diveintopython3.net/strings.html

Interesting PEP's

PEP's or Python Enhancement Proposals are the documents which promote community involvement in the design and adoption process of new features of the language. Some are regularly referenced in conversations with other Python developers when resolving philosophical, technical or cultural differences.

Libraries

The Standard Library

WSGI Servers

Web Frameworks

HTTP

Messaging

In-Memory Store

Database

Concurrency

Process Management

Deployment & Configuration Management

Testing

Environment Management

Interactive Environments

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment