Source: https://web.mit.edu/18.417/doc/pydocs/ref.pdf