Можно ли установить флаг python -O (optimize) внутри скрипта? - PullRequest
10 голосов
/ 23 сентября 2011

Я хотел бы установить флаг оптимизации (python -O myscript.py) на время выполнения в скрипте Python на основе аргумента командной строки для скрипта, например myscript.py --optimize или myscript --no-debug.Я хотел бы пропустить assert заявлений, не отвлекая их всех.Или есть лучший способ эффективно игнорировать разделы кода Python.Есть ли эквиваленты Python для #if и #ifdef в C ++?

Ответы [ 2 ]

12 голосов
/ 23 сентября 2011

-O - флаг компилятора, вы не можете установить его во время выполнения, потому что к тому времени скрипт уже был скомпилирован.

В Python нет ничего похожего на макросы компилятора, такие как #if.

Просто напишите start_my_project.sh скрипт, который устанавливает эти флаги.

7 голосов
/ 23 сентября 2011
#!/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()
...