是否可以在脚本中设置python-O(优化)标志?

是否可以在脚本中设置python-O(优化)标志?,python,optimization,runtime,assert,conditional-compilation,Python,Optimization,Runtime,Assert,Conditional Compilation,我想在python脚本的运行时根据脚本的命令行参数设置优化标志(python-O myscript.py),例如myscript.py--optimize或myscript--no debug。我想跳过assert语句,而不将它们全部删除。还是有更好的方法可以有效地忽略python代码的各个部分。在C++中,如果和 >代码> IFDEF (C++ > -O/是编译器标志,那么在运行时,由于脚本已经编译,所以不能设置它。 Python没有类似于#if的编译器宏 只需编写一个设置这些标志的sta

我想在python脚本的运行时根据脚本的命令行参数设置优化标志(
python-O myscript.py
),例如
myscript.py--optimize
myscript--no debug
。我想跳过
assert
语句,而不将它们全部删除。还是有更好的方法可以有效地忽略python代码的各个部分。在C++中,如果和<代码> >代码> IFDEF (C++ >

<代码> -O/<代码>是编译器标志,那么在运行时,由于脚本已经编译,所以不能设置它。

Python没有类似于
#if
的编译器宏


只需编写一个设置这些标志的
start\u my\u project.sh
脚本。

这是因为您在
os.execl()
中使用了错误的参数。第二个参数是
arg0
而不是
arg1
。请尝试使用
os.execl(sys.executable,sys.executable,'-O',*sys.argv)
或实际上几乎任何其他字符串作为第二个参数,它应该可以像您预期的那样工作。@Duncan:我已经修复了参数。很好的解决方法!我从来不想在没有'-OO'的情况下运行,所以我将它改为
if-debug:os.execl(sys.executable,sys.executable,'-OO',*sys.argv)
#!/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()