为什么所有模块一起运行?

时间:2011-06-20 09:12:11

标签: python eclipse pydev

我刚刚制作了一份eclipse的新副本并安装了pydev。

在我的第一次使用pydev和eclipse的试验中,我在src包下创建了2个模块(默认的一个)

FirstModule.py:

'''
Created on 18.06.2009

@author: Lars Vogel
'''
def add(a,b):
    return a+b

def addFixedValue(a):
    y = 5
    return y +a

print "123"

run.py:

'''
Created on Jun 20, 2011

@author: Raymond.Yeung
'''
from FirstModule import add

print add(1,2)
print "Helloword"

当我拉出运行按钮的下拉菜单,然后单击“ProjectName run.py”时,结果如下:

123
3
Helloword

显然两个模块都运行了,为什么?这是默认设置吗?

1 个答案:

答案 0 :(得分:10)

导入模块时,其中的所有内容都是“运行”。这意味着创建了类和函数对象,设置了全局变量,并执行了print语句。 *)

通常的做法是将语句仅用于在if-block中直接运行模块时执行的语句,如下所示:

if __name__ == "__main__":
    print "123"

现在,如果您将模块作为脚本运行,则__name__设置为"__main__",因此将打印"123"。但是,如果您从其他地方导入模块,__name__在您的情况下将为"FirstModule",而不是"__main__",因此块中的任何内容都不会被执行。

*)请注意,如果再次导入同一模块,则不再“再次”运行。 Python会跟踪导入的模块,并且第二次重新使用已导入的模块。这使得C / C ++技巧就像用IFNDEF语句封装头文件体一样,以确保只在python中不需要导入头文件。