Python has a built-in variable __debug__ which is set to True when python is called without -O (optimize). The -O flag disables all assertion code.
This seems at first glance like a very easy and clean construct to rely on when coding in development versus production: in development, don't use -O, defensively litter your code with type- and sanity-checking asserts. Perform development-only debugging by testing __debug__ beforehand.
When in production, run all code is run with -O which disables asserts (speeding execution) and sets __debug__ to False.