What does Python optimization (-O or PYTHONOPTIMIZE) do?

Solution 1:

In Python 2.7, -O has the following effect:

  • the byte code extension changes to .pyo
  • sys.flags.optimize gets set to 1
  • __debug__ is False
  • asserts don't get executed

In addition -OO has the following effect:

  • sys.flags.optimize gets set to 2
  • doc strings are not available

To verify the effect for a different release of CPython, grep the source code for Py_OptimizeFlag.

Link to official documentation: https://docs.python.org/2.7/tutorial/modules.html#compiled-python-files