
Google Python Style Guide - iamelgringo
http://google-styleguide.googlecode.com/svn/trunk/pyguide.html
======
tvon
A "how this differs from PEP8" summary would be useful to me, assuming it
differs.

~~~
d0mine
The crucial difference:

Google (original formatting):

    
    
      BE CONSISTENT. 
    

PEP8:

    
    
      A Foolish Consistency is the Hobgoblin of Little Minds

~~~
sigzero
No...those are different. One is just telling you to "be" consistent and the
other is telling you not to be "foolish" about it. Much different in my mind.

~~~
vcrash
Seeing as the response is to a comment asking for differences, wouldn't it
make sense to assume that it shows differences? In fact, the response notes
that they are an example of a "crucial difference".

~~~
tvon
I think sigzero means "different" as in "not contradictory or in conflict"

------
ableal
> Indent your code blocks with 4 spaces.

I had this notion it formerly was 2 spaces (too little, IMH-once-bitten-O).
Anyone know when it changed, if it did ?

P.S. In [http://groups.google.com/group/django-
developers/msg/f6a86d1...](http://groups.google.com/group/django-
developers/msg/f6a86d135fb2968f) , back in Aug.2008, GvR says "Most of it
[Google's unpublished internal Python style] is simply PEP-8 with 2-space
indents."

(I dislike 2 spaces, once bitten by missing an indentation bug. I try to stick
to 80 columns - both for print and side-by-side on screen - and think that
more than 4 or 5 levels of indentation is "doing it wrong".)

~~~
DannoHung
What's wrong with 2 spaces? I like 2 spaces.

~~~
sigzero
Then use 2 spaces. To me 2 spaces squishes code to close together. I like 4
spaces so that is what I use. You can always sift your code through a code
formatter if there are differing standards on whatever project you are on.

~~~
viraptor
Or just use tabs, so everyone can set the display to what they like (without
actually rewriting the file).

 _/me hides before the flames start :)_

------
sigzero
Within each grouping, imports should be sorted lexicographically, ignoring
case, according to each module's full package path.

    
    
      import foo
      from foo import bar
      from foo.bar import baz
      from foo.bar import Quux
      from Foob import ar
    

That seems kind of time consuming...

~~~
etal
Some text editors have a function for sorting text in-place. Vim does, and I
assume Emacs does too.

Sorting makes it easier to recognize a common grouping of imports (e.g. some
recurring functionality that requires three particular modules) without
inspecting the words carefully.

~~~
endgame
Emacs: M-x sort-lines

------
njharman
> which should inherit from the built-in Exception class

I hate that. should inherit from StandardError IMNSHO. It's a quibble though
and a pointless one until the standard library follows that. (which it never
will...)

> Use the "implicit" false if at all possible.

Is so wrong, for the listed caveat reasons and more. It's the opposite of
readability to me. Similar issues with the use default iterators. If my loop
is expecting a dictionary and to iterate over it's keys I really want the "foo
has no method keys" error rather than looping over a list and creating hard to
discover/understand bug.

------
1amzave
I enjoyed this bit of example code:

    
    
      x = '%s, %s!' % (imperative, expletive)
    

A decidedly familiar sentence structure...

------
Qz
I don't know if this is just me, but the page looks super ugly on Firefox.

~~~
pgbovine
agreed that it looks super ugly. but it's probably meant first and foremost to
be internal documentation, so i doubt that the writers cared to make it all
snazzy using translucent boxes with rounded corners and jquery rollover
effects.

