66 lines
1.7 KiB
ReStructuredText
66 lines
1.7 KiB
ReStructuredText
.. _codestyle:
|
|
|
|
**********
|
|
Code style
|
|
**********
|
|
|
|
- Always import ``unicode_literals`` and use unicode literals for everything
|
|
except where you're explicitly working with bytes, which are marked with the
|
|
``b`` prefix.
|
|
|
|
Do this::
|
|
|
|
from __future__ import unicode_literals
|
|
|
|
foo = 'I am a unicode string, which is a sane default'
|
|
bar = b'I am a bytestring'
|
|
|
|
Not this::
|
|
|
|
foo = u'I am a unicode string'
|
|
bar = 'I am a bytestring, but was it intentional?'
|
|
|
|
- Follow :pep:`8` unless otherwise noted. `flake8
|
|
<https://pypi.org/project/flake8>`_ should be used to check your code
|
|
against the guidelines.
|
|
|
|
- Use four spaces for indentation, *never* tabs.
|
|
|
|
- Use CamelCase with initial caps for class names::
|
|
|
|
ClassNameWithCamelCase
|
|
|
|
- Use underscore to split variable, function and method names for
|
|
readability. Don't use CamelCase.
|
|
|
|
::
|
|
|
|
lower_case_with_underscores
|
|
|
|
- Use the fact that empty strings, lists and tuples are :class:`False` and
|
|
don't compare boolean values using ``==`` and ``!=``.
|
|
|
|
- Follow whitespace rules as described in :pep:`8`. Good examples::
|
|
|
|
spam(ham[1], {eggs: 2})
|
|
spam(1)
|
|
dict['key'] = list[index]
|
|
|
|
- Limit lines to 80 characters and avoid trailing whitespace. However note that
|
|
wrapped lines should be *one* indentation level in from level above, except
|
|
for ``if``, ``for``, ``with``, and ``while`` lines which should have two
|
|
levels of indentation::
|
|
|
|
if (foo and bar ...
|
|
baz and foobar):
|
|
a = 1
|
|
|
|
from foobar import (foo, bar, ...
|
|
baz)
|
|
|
|
- For consistency, prefer ``'`` over ``"`` for strings, unless the string
|
|
contains ``'``.
|
|
|
|
- Take a look at :pep:`20` for a nice peek into a general mindset useful for
|
|
Python coding.
|