Python中的预处理器ifdefine

2024-05-19 15:52:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我怎样才能在Python中做类似的事情?你知道吗

#if defined(SOMETHING)
  method1(self);
  method2(self);
#elif defined(SOMETHING2)
  method3(self);
  method4(self);
#endif

Tags: selfif事情somethingendifelifdefinedmethod1
2条回答

Python不包含像C语言家族那样的预处理器。然而,作为一种脚本语言,只要每一行都有语法意义,就不必担心没有定义符号(函数和所有的)。您还可以在块(如if语句中的那些块)内使用import库,并且导入的符号将可用于正常的作用域规则。你知道吗

我以前使用过的一种解决方案是将不同的部分放在不同的文件中,我发现它非常有效:

if name == 'nt':  # Windows
    from .nt import get_free_space_mb
elif name == 'posix':  # Linux and OSX
    from .posix import get_free_space_mb
else:
    getLogger(__name__).fatal('Unknown os! %s', name)
    exit(1)

简而言之:你不能

至少在没有运行自己的脚本包装器的情况下是这样的,该包装器执行某种自制的预处理器。您可以进行普通的运行时测试,并且可以有条件地定义方法(这有点像编译时定义),因此根据顶级配置,相同的名称表示不同的功能,但是Python最接近编译时预处理器的是the ^{} special variable。你知道吗

__debug__在字节码编译期间作为常量TrueFalse进行处理,这取决于Python在运行时是否启用了“优化”(调用Python时传递-O只有两个我知道的效果:使__debug__成为False和删除assert语句)。你知道吗

相关问题 更多 >