There’s a discussion on reddit about tricks older programmers would like younger ones to know. A heavy bias may be present (the older ones wanting to keep the younger in check), but my digest reads quite reasonable - so naturally I want to write it down for later reference:
- Use Python 3.6, there are some significant improvements over 2.7 - like enums and fstrings (I would switch to 3.6 just for fstrings, TBH)
.open() or .close() is often a code smell - you probably should be using a with block
- Use
virtualenv for every project - don’t install python packages at the system level. This keeps your project environment isolated and reproducible
- Use the
csv module for CSVs (you’d be surprised…)
- Don’t nest comprehensions, it makes your code hard to read (this one from the Google style guide, IIRC)
- If you need a counter along with the items from the thing you’re looping over, use
enumerate(items)
- If you’re using an IDE (as a Vim user I say you’re crazy if you’re not using Pycharm with Ideavim) take the time to learn it’s features. Especially how to use the debugger, set breakpoints, and step through code
multiprocessing, not threading
- Developing with a REPL like ipython or Jupyter alongside your IDE can be very productive. I am often jumping back and forth between them. Writing pure functions makes them easy to test / develop / use in the REPL. ipython and Jupyter have helpful magics like
%time and %prun for profiling
- Use destructuring assignment, not indices, for multiple assignment
first, second, *_ = (1,2,3,4)
- Avoid
*args or **kwargs unless you know you need them - it makes your function signatures hard to read, and code-completion less helpful
- Use a linter tool like pyflakes or pylint on everything you write. Integrate them into your IDE. They will force you to be a better programmer.
- write unit tests!
import unittest