hob*_*obs 10 python optimization assert runtime conditional-compilation
我想在python脚本python -O myscript.py中运行时根据脚本的命令行参数设置optimize flag(),如myscript.py --optimize或myscript --no-debug.我想跳过assert声明,而不是把它们全部丢掉.或者是否有更好的方法来有效地忽略python代码的各个部分.是否有蟒蛇等价物#if,并#ifdef在C++?
Joc*_*zel 12
-O 是一个编译器标志,你不能在运行时设置它,因为那时脚本已经编译过了.
Python没有类似于编译器宏的可比性#if.
只需编写一个start_my_project.sh设置这些标志的脚本.
#!/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()
Run Code Online (Sandbox Code Playgroud)