可以在脚本中设置Python -O(优化)标志吗?

12 投票
2 回答
2781 浏览
提问于 2025-04-17 02:54

我想在运行时设置优化标志(python -O myscript.py),也就是说在我的Python脚本中根据命令行参数来决定,比如像这样使用:myscript.py --optimize 或者 myscript --no-debug。我希望能跳过 assert 语句,而不需要把所有的 assert 都删掉。或者有没有更好的方法可以有效地忽略Python代码中的某些部分?在Python中有没有类似于C++中的 #if#ifdef 的东西?

2 个回答

8
#!/usr/bin/env python
def main():
    assert 0
    print("tada")

if __name__=="__main__":
   import os, sys
   if '--optimize' in sys.argv:
      sys.argv.remove('--optimize')
      os.execl(sys.executable, sys.executable, '-O', *sys.argv)
   else:
      main()

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

13

-O 是一个编译器的选项,你不能在程序运行时设置它,因为到那个时候,程序已经被编译好了。

Python 没有类似于编译器宏的东西,比如 #if

你可以简单地写一个 start_my_project.sh 脚本来设置这些选项。

撰写回答