这几天开始学习Python,遇到一些问题,也解决了一些问题。

其中if __name__ == '__main__':这句估计很多和我一样的初学者都是不求甚解。
这里作一下解释:

1:__name__是一个变量。前后加了爽下划线是因为是因为这是系统定义的名字。普通变量不要使用此方式命名变量。
2:Python有很多模块,而这些模块是可以独立运行的!这点不像C++和C的头文件。
3:import的时候是要执行所import的模块的。
4:__name__就是标识模块的名字的一个系统变量。这里分两种情况:假如当前模块是主模块(也就是调用其他模块的模块),那么此模块名字就是__main__,通过if判断这样就可以执行“__mian__:”后面的主函数内容;假如此模块是被import的,则此模块名字为文件名字(不加后面的.py),通过if判断这样就会跳过“__mian__:”后面的内容。

通过上面方式,python就可以分清楚哪些是主函数,进入主函数执行;并且可以调用其他模块的各个函数等等。


1. 如果模块是被导入,__name__的值为模块名字
2. 如果模块是被直接执行,__name__的值为’__main__’

1 #Py1.py
2 #!/usr/bin/env python
3 def test():
4 print '__name__ = ',__name__
5 if __name__ == '__main__':
6 test()
1 #Py2.py
2 #!/usr/bin/env python
3 import Py1.py
4 def test():
5 print '__name__ = ',__name__
6 if __name__ == '__main__':
7 test()
8 print ‘Py1.py __name__ = ’,Py1.__name__

执行结果:

__name__=__main__
Py1.py __name__=Py1

通过结果可以知道,Py2.py直接执行,那么内建变量__name__的值为__main__,否则为模块的名字,通过这个特性可以在if语句里面添加测试代码,可以提高减少BUG,提高程序的健壮性。
if __name__ == '__main__':
  test()

最新文章

  1. 使用VIM插件ctags来阅读C代码
  2. linux rpm问题:怎样查看rpm安装包的安装路径
  3. dede织梦后台如何修改?如何增加删除菜单?(
  4. Web大文件上传控件-bug修复-Xproer.HttpUploader6
  5. Codeforces Round #376 (Div. 2) C. Socks---并查集+贪心
  6. mr的logs的查看
  7. wap_supplicant介绍
  8. Hidden Password
  9. [LeetCode]题解(python):146-LRU Cache
  10. Oracle集合操作函数:union、intersect、minus
  11. css强制折行和隐藏超出部分
  12. javacpp-opencv图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
  13. Branch Prediction
  14. vue图片上传到七牛云
  15. vue-cli(vue脚手架) 简单使用
  16. SpringCloud Eureka服务注册及发现——服务端/客户端/消费者搭建
  17. python实现微信自动回复机器人
  18. Windows平台下tomcat+java的web程序持续占cpu问题调试
  19. python之多线程队列
  20. Web Service测试工具小汇

热门文章

  1. 苹果HomeKit联手海尔的三大原因
  2. c++ 中 char 与 string 之间的相互转换问题
  3. Qt Quick Hello World hacking
  4. opencv图像读取-imread
  5. js 获取客户端mac地址
  6. python绘制树枝
  7. css hover遮罩层
  8. 记录几个ubuntu环境下的php相关的路径
  9. 偶尔用得上的MySQL操作
  10. MySQL的innoDB锁机制以及死锁处理