README.md 1.3 KB

python_notes

Just notes on various things

Magic Methods

Classes have certain magic methods that help make objects behave in pythonlike ways.

  • __repr__ returns a string representation of the object. Should be unambiguous. (i.e. add parameters).
  • __str__ returns a string representation of the object. Should be easily readable but not necessarily unambiguous. Careful, can be confused with __repr__ in some cases.

docstrings

Use 'em.

doctest

In your docstring, put examples that look like the command-line, such as

def square(x):
    """
    Returns x times itself.
    >>> square(2)
    4
    """
    return x*x

Then import doctest and doctest.testmod() inside __main__, and python will run the tests to verify correctness.

Run with python -v to see the output of the doctest module.

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)