python-预处理器函数使用错误的if条件值打印
如果我用C中的预处理器定义一个函数,然后在If中调用它,即使If应该为false,它也会运行python-预处理器函数使用错误的if条件值打印,python,python-3.x,if-statement,preprocessor-directive,Python,Python 3.x,If Statement,Preprocessor Directive,如果我用C中的预处理器定义一个函数,然后在If中调用它,即使If应该为false,它也会运行 #define HELLO \ { \ print("hello world") \ } i = 1 if i == 2: HELLO 这张印着你好 如果我做一个像这样的普通函数 def hello(): print("hello world") i = 1 if i == 2: hello() 那它就不会这么做了 为什么会
#define HELLO \
{ \
print("hello world") \
}
i = 1
if i == 2:
HELLO
这张印着你好
如果我做一个像这样的普通函数
def hello():
print("hello world")
i = 1
if i == 2:
hello()
那它就不会这么做了
为什么会有差异?我知道括号是不同的,但我尝试了有括号和没有括号的两种方法,没有任何区别。Python没有内置的预处理器。宏定义没有达到您预期的效果:
#define HELLO \
{ \
print("hello world") \
}
第一行以#
开头,因此Python将其视为注释。该行以一个连续的\
结尾,但注释仍然在第一行之后结束。整个事情相当于:
{print("hello world")}
这将调用print
,它将打印hello world
,然后创建一个set
,结果为None
如果您想使用C预处理器,则需要在将结果传递给Python之前显式调用它。为了清楚起见,第一个片段应该是类似“C”的语言,第二个片段应该是python吗?我在python中使用预处理器,就像在COr中一样,我正在尝试使用哪个预处理器?但是它打印hello,即使if值不等于谢谢,我该如何做预处理器?我也试着用大拇指翻出答案,但它仍然说0为什么是问题-1?使用Unix风格的shell语法,您可以在Python文件上运行预处理器,作为
gcc-E-file2.py
这将对file1.py
进行预处理,并将结果放入file2.py
。请注意,C预处理器的设计并没有考虑到Python,因此在使用它时需要格外小心。但你最好完全避免。Python实际上不需要预处理器,因为它是一种动态的解释语言。在您的情况下,您可以用一个函数替换HELLO
,并在需要时调用该函数。