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

lam*_*988 2 python eclipse pydev

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

在我第一次尝试使用eclipse中的pydev时,我在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 Code Online (Sandbox Code Playgroud)

run.py:

'''
Created on Jun 20, 2011

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

print add(1,2)
print "Helloword"
Run Code Online (Sandbox Code Playgroud)

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

123
3
Helloword
Run Code Online (Sandbox Code Playgroud)

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

Lau*_*low 10

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

通常的做法是封装仅在模块直接在if-block中运行时执行的语句,例如:

if __name__ == "__main__":
    print "123"
Run Code Online (Sandbox Code Playgroud)

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

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