为什么简单地导入python模块会执行该模块中的所有内容?
参见英文答案 >
Why is Python running my module when I import it,and how do I stop it?????????????????????????????????????9个
最近我注意到使用模块是保持我的python编程整洁的好选择. 为了开始,我创建了一个模块(名为oop.py),其中包含一个类,如下所示: #Module named oop class Team: def __init__(self): print "class Team initialized" def displayTeam(self): print "Team name: ",self.name,",Rank :",self.rank def setTeam(self,name,rank): self.name = name self.rank = rank t1 = Team() t1.setTeam("Man-Utd",1) t1.displayTeam() 根据python文档,如果我们想要使用模块中的特定属性,那么我们使用< from module_name> import< attribute> .我只想加载“班级队” 在另一个python代码(名为oop1.py)中,我只是导入了上面的模块. oop.py如下所述: #This is oop1.py. #Importing module oop from oop import Team 来自终端的python oop1.py的输出是: class Team initialized Team name: Man-Utd,Rank : 1 通过从oop导入团队声明,我期望只加载类定义.为什么这些额外的行t1 = Team() 模块中是否允许初始化? 解决方法
在python模块中是对象.为了创建模块对象,执行它包含的代码,并将找到的绑定作为属性添加到对象中.
指定要导入的内容不会更改整个模块执行的事实,之后只会通过导入将单个绑定放入作用域. 标准做法是在保护后导入时放置您不想执行的任何代码: if __name__ == '__main__': # your code here __name__是一个特殊的全局,仅在执行模块时才是__main__.在导入期间,它被设置为模块的名称(因此不会执行该代码). 要了解有关模块的更多信息,请阅读documentation.还有一节介绍了上述防护:Executing modules as scripts (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |