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

发布于 2024-11-16 08:57:07 字数 604 浏览 2 评论 0原文

我刚刚制作了 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.py:

'''
Created on Jun 20, 2011

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

print add(1,2)
print "Helloword"

当我拉出运行按钮的下拉菜单,然后单击“ProjectName run.py”时,我在 src 包下创建了 2 个模块。 py”,这是结果:

123
3
Helloword

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

I just made a fresh copy of eclipse and installed pydev.

In my first trial to use pydev with eclipse, I created 2 module under the src package(the default one)

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"

When I pull out the pull down menu of the run button, and click "ProjectName run.py", here is the result:

123
3
Helloword

Apparantly both module ran, why? Is this the default setting?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

深爱成瘾 2024-11-23 08:57:07

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

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

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

现在,如果您将模块作为脚本运行,__name__ 设置为 "__main__",因此将打印 "123"。但是,如果您从其他地方导入模块 __name__ 在您的情况下将是 "FirstModule",而不是 "__main__",所以无论是该块将不会被执行。

*) 请注意,如果再次导入相同的模块,它就不会再次“运行”。 Python 会跟踪导入的模块,并在第二次重新使用已经导入的模块。这使得 C/C++ 技巧得以实现,例如使用 IFNDEF 语句将头文件体括起来,以确保头文件仅在 Python 中不需要时才导入。

When you import a module, everything in it is "run". This means that classes and function objects are created, global variables are set, and print statements are executed. *)

It is common practice to enclose statements only meant to be executed when the module is run directly in an if-block such as this:

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

Now if you run the module as a script, __name__ is set to "__main__", so "123" will be printed. However, if you import the module from somewhere else __name__ will be "FirstModule" in your case, not "__main__", so whatever is in the block will not be executed.

*) Note that if you import the same module again, it is not "run" again. Python keeps track of imported modules and just re-uses the already imported module the second time. This makes C/C++ tricks like enclosing header file bodies with IFNDEF statements to make sure the header is only imported once unnecessary in python.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文