2024-05-19 09:46:57 发布
网友
我怎样才能在Python中做类似的事情?你知道吗
#if defined(SOMETHING) method1(self); method2(self); #elif defined(SOMETHING2) method3(self); method4(self); #endif
Python不包含像C语言家族那样的预处理器。然而,作为一种脚本语言,只要每一行都有语法意义,就不必担心没有定义符号(函数和所有的)。您还可以在块(如if语句中的那些块)内使用import库,并且导入的符号将可用于正常的作用域规则。你知道吗
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__在字节码编译期间作为常量True或False进行处理,这取决于Python在运行时是否启用了“优化”(调用Python时传递-O只有两个我知道的效果:使__debug__成为False和删除assert语句)。你知道吗
__debug__
True
False
-O
assert
Python不包含像C语言家族那样的预处理器。然而,作为一种脚本语言,只要每一行都有语法意义,就不必担心没有定义符号(函数和所有的)。您还可以在块(如
if
语句中的那些块)内使用import
库,并且导入的符号将可用于正常的作用域规则。你知道吗我以前使用过的一种解决方案是将不同的部分放在不同的文件中,我发现它非常有效:
简而言之:你不能
至少在没有运行自己的脚本包装器的情况下是这样的,该包装器执行某种自制的预处理器。您可以进行普通的运行时测试,并且可以有条件地定义方法(这有点像编译时定义),因此根据顶级配置,相同的名称表示不同的功能,但是Python最接近编译时预处理器的是the ^{} special variable 。你知道吗
__debug__
在字节码编译期间作为常量True
或False
进行处理,这取决于Python在运行时是否启用了“优化”(调用Python时传递-O
只有两个我知道的效果:使__debug__
成为False
和删除assert
语句)。你知道吗相关问题 更多 >
编程相关推荐