Python Style Guide
Table of Contents
Readability counts. One of Guido’s key insights is that code is read much more often than it is written. The following suggestions of Python style is a summary of the ones in [PEP 8]
Blank lines
Separate top-level function and class definitions with two blank lines.
Method definitions inside a class are separated by a single blank line.
Extra blank lines may be used (sparingly) to separate groups of related functions.
Use blank lines in functions, sparingly, to indicate logical sections.
Avoid using spaces
Immediately inside parentheses, brackets or braces:
- YES: spam(ham[1], {eggs: 2})
- NO: spam( ham[ 1 ], { eggs: 2 } )
Immediately before a comma, semicolon, or colon:
- YES: if x == 4: print x, y; x, y = y, x
- NO: if x == 4 : print x , y ; x , y = y , x
More than one space around an assignment (or other) operator to align it with another.
- YES:
x = 1
y = 1
long_var = 3
- NO:
x = 1
y = 1
long_var = 3
Around the = sign when used to indicate a keyword argument or a default parameter value..
- YES:
def complex(real, imag=0.0):
return magic(r=real, i=imag)
- NO:
def complex(real, imag = 0.0):
return magic(r = real, i = imag)
Use spaces
Surround binary operators with a single space (, +, =, <, >, !, <>, <, >, in, not in, is, is not, etc.) If operators with different priorities are used, consider adding whitespace around the operators with the lowest priority(ies)
YES:
i = i + 1
submitted += 1
x = x*2 - 1
hypot2 = x*x + y*y
c = (a+b) * (a-b)
- NO:
i=i+1
submitted +=1
x = x * 2 - 1
hypot2 = x * x + y * y
c = (a + b) * (a - b)
Naming conventions
- Package or module names:
module
module_name
Classes:
CamelCase (usually nouns)
- Methods:
mixedCase (usually actions)
- Constants:
UPPER_WITH_UNDERSCORE
Use library functions
Use libraries functions whenever is possible. Avoid using system commands.
- YES:
moveFile(sourceFile, destFile)
cleanPattern(“*.log”)
self._getExtraPath(“a”, “b”, “file.log”)
- NO:
runJob(“mv”, sourceFile + “ “ + destFile)
runJob(“rm”, “*.log”)
os.path.join(self.workingDir, “a/b/file.log”)