从已编译的CPython中删除文档字符串,但不删除断言
我想从Python程序中删除文档字符串,但将断言(和从已编译的CPython中删除文档字符串,但不删除断言,python,python-2.7,python-2.x,cpython,Python,Python 2.7,Python 2.x,Cpython,我想从Python程序中删除文档字符串,但将断言(和\uuu调试\uuu部分)保留在中。我一直在使用-OO标志生成.pyo文件,但根据这一点,会同时删除断言和文档字符串 我用的是CPython2.7 澄清:我将删除docstring作为一种廉价的模糊处理方法。管理层做出了这个决定,我认为这是否有用超出了这个问题的范围。你不能拥有-O的一半。它删除docstring和断言,这就是它的工作方式。断言通常是可选的,也就是说,您可以在不影响程序行为的情况下删除它们 如果我必须删除文档字符串,并把其他的东
\uuu调试\uuu
部分)保留在中。我一直在使用-OO标志生成.pyo文件,但根据这一点,会同时删除断言和文档字符串
我用的是CPython2.7
澄清:我将删除docstring作为一种廉价的模糊处理方法。管理层做出了这个决定,我认为这是否有用超出了这个问题的范围。你不能拥有
-O
的一半。它删除docstring和断言,这就是它的工作方式。断言通常是可选的,也就是说,您可以在不影响程序行为的情况下删除它们
如果我必须删除文档字符串,并把其他的东西单独留下,我会考虑编写一个打开.PyC文件的工具,解封内容,修改它们(通过删除文档字符串),并将它们重新打包为.PyC文件。但如果能这样做的话,这可能是一个微妙而脆弱的工具。
为什么?这似乎是个奇怪的要求,我希望能够做到这一点:我已经解释了为什么我需要删除docstring,而不是问题中的断言。当然,在编译源文件之前,编写脚本从源文件中删除docstring会更容易、更健壮。@PeterGraham:你没有解释为什么要保留断言–这是这是你需求中非常奇怪的部分。在生产构建中不需要断言。在生产构建中保留断言是有充分理由的,尤其是在飞行代码中。见: