Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python-预处理器函数使用错误的if条件值打印_Python_Python 3.x_If Statement_Preprocessor Directive - Fatal编程技术网

python-预处理器函数使用错误的if条件值打印

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() 那它就不会这么做了 为什么会

如果我用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()
那它就不会这么做了


为什么会有差异?我知道括号是不同的,但我尝试了有括号和没有括号的两种方法,没有任何区别。

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
,并在需要时调用该函数。