# python_notes Just notes on various things ## Naming Notes Classes use CamelCaps Functions and varibles are lowercase() or lowercase_with_underscores(). Always use self for the first argument to instance methods. Always use cls for the first argument to class methods ## Comments Block comments are at the same indentation and are complete sentences. Inline comments shouldn't state the obvious. Avoid: ``` x = x + 1 # Increment x ``` But this can be useful: ``` x = x + 1 # Compensate for the border ``` ## docstrings Use 'em. See PEP257 - https://www.python.org/dev/peps/pep-0257 ## ArgParse ## Interesting Tidbits Redirect stdout to a file. The `with` isolates context and prevents certain race conditions, handling errors appropriately. ``` with open('help.txt', 'w') as f: with redirect_stdout(f): help(pow) ``` ### Caching If you have a function that always returns the same result for a given input, you can cache the result by prefacing with `@lru_cache`. e.g. ``` from functools import lru_cache @lru_cache(maxsize=32) def fib(n): if n < 2: return n return fib(n-1) + fib(n-2) ```