[Tutor] Naming conventions
Steven D'Aprano
steve at pearwood.info
Tue Apr 28 17:15:19 CEST 2015
On Tue, Apr 28, 2015 at 01:01:04PM +0530, Mitesh H. Budhabhatti wrote:
> Hello Friends,
>
> Can you please suggest good naming conventions/guidelines to following
> while writing Python code? Thanks.
Most important rule of all: names should be descriptive and
understandable, not too short or cryptic, not so long that they are
painful to use. Very common names may be abbreviated. Names should be
easy to say aloud.
# Good names
length, len, map, format
# Bad names
a, the_thing_we_process, szty
Avoid "funny" or meaningless names:
pizza = 23
homework = 5
print (pizza > homework)
It is acceptable to use standard one-letter variable names in
generic functions, especially for algebraic (maths) functions and
short utility functions, e.g.:
i, j, k: integer loop variables
m, n: other integers
x, y: floats
z: complex numbers
s: string or set
d: dict
L: list (don't use l because it can look like 1)
o: object
u, v: vectors, arrays, sets
are common choices. But don't over-use one-letter names.
Otherwise, names should be self-descriptive:
# Bad
L = get_customers() # list of customers
# Good
customers = get_customers()
Use plurals for lists, sets or dicts of some data type, and the singular
for individual data types. E.g.:
names = ['John', 'Mary', 'Fred', 'Sue']
for name in names:
process(name)
Functions and methods should be verbs or verb-phrases in all lowercase,
for example:
expand() sort() lift() prepare_database() create_factory()
Variables holding data values should be nouns:
page count header footer server client factory
(Watch out for words which can be both a noun and a verb, like count.)
Classes should be nouns with initial capitals:
Car Engine Animal HTTPServer
and instances should be lowercase:
server = HTTPServer()
The exception is if the class is a "small" primitive or simple type,
like built-ins int, str, dict, list etc. But even then, you may choose
to use Initial Capitals instead.
Modules should follow the all-lowercase name. If possible, modules
should describe what they are about:
math string io unicodedata
but it is also acceptable for modules to have an arbitrary name which
you just have to learn:
pillow flask zope fabric nose
Does this help?
--
Steve
More information about the Tutor
mailing list