我需要用 Python 模仿 C 的预处理器特性。
如果我想运行调试版本,我使用 C 如下
#ifdef DEBUG
printf(...)
#endif
我只是使用 -DDEBUG 或类似的东西来触发或关闭它。
我可以对 Python/Ruby 使用什么方法?我的意思是,我应该如何控制 python/ruby 脚本的行为,以便我可以更改影响项目中所有脚本文件的变量?
我需要用 Python 模仿 C 的预处理器特性。
如果我想运行调试版本,我使用 C 如下
#ifdef DEBUG
printf(...)
#endif
我只是使用 -DDEBUG 或类似的东西来触发或关闭它。
我可以对 Python/Ruby 使用什么方法?我的意思是,我应该如何控制 python/ruby 脚本的行为,以便我可以更改影响项目中所有脚本文件的变量?
您通常在此用例中使用python 日志记录功能。这是在配置文件中配置的,您可以设置输出级别。如果您熟悉的话,它的用法与 java log4j 非常接近。
您几乎可以使用实际的 C 预处理器。如果您将文件重命名为.c
以gcc -w -E input/file.py.c -o output/file.py
.
主要问题似乎在于评论。预处理器会抱怨 python 注释行是无效的预处理器指令。您可以使用 C++ 注释 ( // comment
) 来解决这个问题。
或者,一个更好的主意是编写自己的简单预处理器。如果您只需要#define
功能,那么您只是在谈论对文件进行搜索和替换。
另一种解决方案是这样的:
def nothing(*args):
pass
def print_debug(msg):
print msg
if not DEBUG:
print_debug = nothing
这样,如果您不在调试模式下,您的打印语句不会做任何事情。
最新版本也可以通过PYPI访问
以下是基本用法:
from pypreprocessor import pypreprocessor
pypreprocessor.parse()
#define debug
#ifdef debug
print('The source is in debug mode')
#else
print('The source is not in debug mode')
#endif
你去吧。在 python 中实现的 C 样式预处理器条件编译。
旁注:该模块与 python2x 和 python3k 兼容。
免责声明:我是 pypreprocessor 的作者。