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