python项目中为什么经常看见“ if __name__ == ‘__main__’:”

前言

尽管大家在编写python会允许你像shell脚本一样,把大量代码堆积在一起,但是,有很多python入门的书籍,都会建议封装一个函数去写(面向对象也可以写),然后在最后统一调用,例如这样 :

def main(): 
#具体代码 
if __name__ == '__main__':
 main()

很多文章都会说这是由于代码样式等原因,但实际上,不这样写,有时会直接导致错误。

例如,打开python的一个字节的class变量部分,可以在这里看到在线版本,然后在中间复制示例代码,运行,就可以看到预期的正确结果。

但是现在将代码中的所有“swaroop”替换为“xxx1”,将所有“kalam”替换为“yyy1”,然后再次运行,在程序结束时,您将得到这样一个奇怪的错误(python 2.6.5实验):

异常属性错误:>忽略中的“nonetype”对象没有属性“population”

也就是说,如果我们改变变量名,程序就会出错…

原因是,当Python最终销毁所有类和对象时,它不处理这些对象之间的依赖关系,而是根据变量的名称决定某种顺序操作。因此,Person类本身在YYY2之前就被销毁了,所以当您解构YYY2时,您将执行它的Del_()方法,并发现父类已经不存在了。~~

这在Python解析器中应该是一个bug,但是如果您将本例中类人员之外的所有代码写入一个main()函数并通过上面的方法调用它,就不会发生这种情况。

所以,你最好不要太注意几行代码,养成这个好习惯。

学习从来不是一个人的事情,要有个相互监督的伙伴,工作需要学习python或者有兴趣学习python的伙伴可以私信回复小编“学习” 领取全套免费python学习资料、视频()装包

相关推荐