为什么python里要 if __name__ == ‘__main__’:
浏览:7203次 出处信息
尽管python允许你像shell脚本一样,把大段的代码堆积着写,但是,很多python入门的书,都会建议你把代码写成一个函数,然后在最后面统一调用,例如这样:
def main(): #具体代码 if __name__ == '__main__': main()
很多文章都会说这个是由于代码风格之类的原因,但是其实,不这样写,有时候也是会直接导致出错的。
举个例子,打开《A Byte of Python》的类变量那节,可以这里看在线版本,然后把中间的那示例代码复制下来,运行,可以看到,确实能得到预期正确的结果。
但是,现在把那代码里的所有“swaroop”换成“xxx1”,再把所有“kalam”换成“yyy1”,再运行,就会在程序运行的最后时刻,得到这么一个奇怪的错误(Python 2.6.5下实验):Exception AttributeError: "'NoneType' object has no attribute 'population'" in
也就是说,换了个变量名,程序就出错了。。。
究其原因,应该是python在最后析构所有类和对象的时候,并没有处理这些对象之间的依赖关系,而是根据变量名来决定某种顺序操作了。从而导致Person
类本身,先于yyy2
被干掉了,所以在解构yyy2
的时候,执行它的__del__()
方法,却发现父类都已经没有了~~
这应该确实算是python解析器的bug,但是,如果那把这个例子里的所有class Person以外的代码,写到一个main()
函数里,再通过上述方法调用的话,就不会发生这种错误了。
所以,大家最好还是别太在意多几行代码,养成这个好习惯吧。
建议继续学习:
- 配置Nginx+uwsgi更方便地部署python应用 (阅读:105382)
- 如何成为Python高手 (阅读:53379)
- python实现自动登录discuz论坛 (阅读:31576)
- python编程细节──遍历dict的两种方法比较 (阅读:18985)
- 每个程序员都应该学习使用Python或Ruby (阅读:16251)
- 30分钟3300%性能提升――python+memcached网页优化小记 (阅读:12110)
- 使用python爬虫抓站的一些技巧总结:进阶篇 (阅读:12095)
- 我的PHP,Python和Ruby之路 (阅读:11829)
- Python处理MP3的歌词和图片 (阅读:8311)
- 关于使用python开发web应用的几个库总结 (阅读:7425)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:记开发firefox extension
后一篇:Ruby 解析 HTML (Nokogiri) >>
文章信息
- 作者:bones7456 来源: I am LAZY bones ?
- 标签: python
- 发布时间:2010-06-01 09:59:21
建议继续学习
近3天十大热文
- [66] Oracle MTS模式下 进程地址与会话信
- [66] Go Reflect 性能
- [65] 如何拿下简短的域名
- [59] android 开发入门
- [59] 图书馆的世界纪录
- [59] IOS安全–浅谈关于IOS加固的几种方法
- [58] 【社会化设计】自我(self)部分――欢迎区
- [53] 视觉调整-设计师 vs. 逻辑
- [47] 界面设计速成
- [46] 读书笔记-壹百度:百度十年千倍的29条法则