Python优化(-O或PYTHONOPTIMIZE)是做什么的?

文档只是说,Python解释器执行“基本优化”,而不会涉及任何细节。 显然,它是依赖于实现的,但有什么方法可以让我们了解哪些types的东西可以优化,以及可以产生多less运行时间节省?

使用-O有什么不好的地方吗?

我所知道的唯一的事情就是-O禁用assert ,但是大概不应该使用assert来表示在生产中可能会出错的东西。

在Python 2.7中, -O具有以下效果:

  • 字节码扩展更改为.pyo
  • sys.flags.optimize被设置为1
  • __debug__是假的
  • 断言不会被执行

另外-OO具有以下效果:

  • sys.flags.optimize被设置为2
  • 文档string不可用

要validation不同版本的CPython的效果,请grep Py_OptimizeFlag的源代码。

链接到官方文档: https : //docs.python.org/2.7/tutorial/modules.html#compiled-python-files