python

Pythonic

zip/unzip

  • result:

in

dict & counter

enumerate

  • P:

  • NP:

import local module

args & kwargs

itertools

one-line python code

slice

chain compare

  • P:

  • NP:

boolean

  • P:

  • NP:

reverse

  • P:

  • NP:

join in list

  • P:

  • NP:

sum & max & min & time

  • P:

  • NP:

list comprehensions

  • P:

  • NP:

default dict

  • P:

  • NP:

if...else...

  • P:

  • NP:

ternary operator

  • P:

  • NP:

dict & zip

  • P:

  • NP:

[!NOTE|label:references:]

numbers

round

integer base

in-place value swapping

sum

string

multi-line strings

  • or

  • or

in

Join

set

slice operators

  • or

  • or

reversed

backslashes

  • or

args

Use _ instead of last printed item

*args & **kwargs

  • or

function argument unpacking

conditional assignment

ternary operator

  • or

  • or

  • or

  • or

  • or

conditional

  • or

  • or

  • or

  • or

  • or

  • or

    • equal to

dict comprehensions, manual

set comprehensions

list & dics

zip

  • or

  • or

  • or

  • or

list & sum

nested list

  • or

enumerate

  • or

generate list

dict's constructor

  • or

dict's get

copy list

replace list

generators objects

  • or

generator & iteration

iteration & constructor (yield)

  • or

  • or

  • or

  • or

  • or

statement

for...else...

  • or

context managers and the "with" statement

try...except...elese...finally

funcs

dir

help

convenient web-browser controller

built-in http server

an interpreter within the interpreter

pretty print

  • or

class & module

bash

assertion

import

create new types

  • or

Manipulating sys.modules

  • or

Others

not hidden but still nice

be careful with mutable default arguments

  • or

Indentation

  • yes:

  • no:

optional

if statemant

list

  • or

Maximum Line Length

  • yes:

Should a Line break before or after a binary operator?

  • no: operators sit far away from their operands

  • yes: easy to match operators with operands

imports

  • no:

  • yes:

  • bad:

absolute imports are recommended

explicit relative imports are acceptable

import a class from a class-containing module

local name classes

module Level dunder names

Module level "dunder" names with two leading and two trailing underscores, such as __all__, __author__, __version__, etc

  • yes:

whitespace in expressions and statements

  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:

other recommendations

  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:

rather NO

  • yes:

DEFINITELY NO

  • yes:

documentation strings

  • yes:

Programming Recommendations

  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:


  • no:

  • yes:

  • worse:


E1 Indentation

  • E101 indentation contains mixed spaces and tabs

  • E111 indentation is not a multiple of four

  • E112 expected an indented block

  • E113 unexpected indentation

  • E114 indentation is not a multiple of four (comment)

  • E115 expected an indented block (comment)

  • E116 unexpected indentation (comment)

  • E121 (*^) continuation line under-indented for hanging indent

  • E122 (^) continuation line missing indentation or outdented

  • E123 (*) closing bracket does not match indentation of opening bracket’s line

  • E124 (^) closing bracket does not match visual indentation

  • E125 (^) continuation line with same indent as next logical line

  • E126 (*^) continuation line over-indented for hanging indent

  • E127 (^) continuation line over-indented for visual indent

  • E128 (^) continuation line under-indented for visual indent

  • E129 (^) visually indented line with same indent as next logical line

  • E131 (^) continuation line unaligned for hanging indent

  • E133 (*) closing bracket is missing indentation

E2 Whitespace

  • E201 whitespace after ‘(‘

  • E202 whitespace before ‘)’

  • E203 whitespace before ‘:’

  • E211 whitespace before ‘(‘

  • E221 multiple spaces before operator

  • E222 multiple spaces after operator

  • E223 tab before operator

  • E224 tab after operator

  • E225 missing whitespace around operator

  • E226 (*) missing whitespace around arithmetic operator

  • E227 missing whitespace around bitwise or shift operator

  • E228 missing whitespace around modulo operator

  • E231 missing whitespace after ‘,’, ‘;’, or ‘:’

  • E241 (*) multiple spaces after ‘,’

  • E242 (*) tab after ‘,’

  • E251 unexpected spaces around keyword / parameter equals

  • E261 at least two spaces before inline comment

  • E262 inline comment should start with ‘# ‘

  • E265 block comment should start with ‘# ‘

  • E266 too many leading ‘#’ for block comment

  • E271 multiple spaces after keyword

  • E272 multiple spaces before keyword

  • E273 tab after keyword

  • E274 tab before keyword

E3 Blank line

  • E301 expected 1 blank line, found 0

  • E302 expected 2 blank lines, found 0

  • E303 too many blank lines (3)

  • E304 blank lines found after function decorator

E4 Import

  • E401 multiple imports on one line

  • E402 module level import not at top of file

E5 Line length

  • E501 (^) line too long (82 > 79 characters)

  • E502 the backslash is redundant between brackets

E7 Statement

  • E701 multiple statements on one line (colon)

  • E702 multiple statements on one line (semicolon)

  • E703 statement ends with a semicolon

  • E704 (*) multiple statements on one line (def)

  • E711 (^) comparison to None should be ‘if cond is None:’

  • E712 (^) comparison to True should be ‘if cond is True:’ or ‘if cond:’

  • E713 test for membership should be ‘not in’

  • E714 test for object identity should be ‘is not’

  • E721 (^) do not compare types, use ‘isinstance()’

  • E731 do not assign a lambda expression, use a def

E9 Runtime

  • E901 SyntaxError or IndentationError

  • E902 IOError

W1 Indentation warning

  • W191 indentation contains tabs

W2 Whitespace warning

  • W291 trailing whitespace

  • W292 no newline at end of file

  • W293 blank line contains whitespace

W3 Blank line warning

  • W391 blank line at end of file

W5 Line break warning

  • W503 line break occurred before a binary operator

W6 Deprecation warning

  • W601 .has_key() is deprecated, use ‘in’

  • W602 deprecated form of raising exception

  • W603 ‘<>’ is deprecated, use ‘!=’

  • W604 backticks are deprecated, use ‘repr()’

Last updated

Was this helpful?