一、概念

  我们在Python中经常可以看到一个程序会有if __name__ == "__main__",同时这通常是写在程序的入口位置,那么他有什么特殊含义呢?在了解这个之前,我们需要知道的是:

  1. python中一切皆对象,模块,类等都是对象,是对象就一定有属性;

  2. python文件有两种执行方式,一则import 模块调用,二则直接执行;

  3. 每个对象都有__name__属性,__name__,如果是放在Modules模块中,就表示是模块的名字;如果是放在Classs类中,就表示类的名字;

  4. import模块时,__name__ 的值通常为模块文件名;当直接执行py时候不被模块调用时,则__name__就等于"__main__"

二、总结

  当我们知道了以上的知识点,便很好理解了,比如我们使用Python来完成一个项目时,通常都会将其分为不同模块去实现,举例来说需要实现购物商城时会有用户登陆入口,购物车,支付等几个功能,它们分别实现在不同的.py文件中(login.py、shopping_cart.py、pay.py、index.py),其中index.py约定为程序的主入口,在除了此文件中,除了index.py,其他的文件__name__的值都和其文件名称相等,这和上述所说的第四点相同。所以在if __name__ == "__main__"这个条件成立的时候,只能是index.py当做程序的主入口。一个程序只有一个主入口文件,如果执行主程序文件,Python会在其文件内部自动创建一个变量,变量名称叫做__name__,他的值自然就等于__main__,当然如上所述所说,生成这个变量的前提是执行主入口文件。

最新文章

  1. 【转】MipMap
  2. BASH比较大小
  3. dojo/aspect源码解析
  4. NetLink Communication Mechanism And Netlink Sourcecode Analysis
  5. Spring IoC原理详解
  6. 那些年独自踩过的flascc的坑
  7. 程序员实用的 MySQL sql 语句
  8. redis的特色
  9. Python爬虫从入门到放弃(十八)之 Scrapy爬取所有知乎用户信息(上)
  10. 团队作业8——第二次项目冲刺(Beta阶段)--第七天
  11. SSH搭建spring,使用依赖注入的方法
  12. 44.1khz 16位比特双声道一分钟的音乐文件占多少硬盘空间?
  13. C++ 命名管道 与Winform跨进程通信
  14. HBase API操作
  15. Nginx 配置负载均衡
  16. 允许远程用户登录访问mysql的方法
  17. ThinkPHP 框架2.1,2.2和3.0版本开启lite模式导致URL命令执行漏洞
  18. java基础面试题-2
  19. P1896 [SCOI2005]互不侵犯 状压dp
  20. Activity(活动)

热门文章

  1. 原生JavaScript判断浏览器对CSS属性是否支持
  2. vue 的反向代理
  3. 微服务Consul系列之服务注册与服务发现
  4. Eclipse导war包忽略node_modules等文件
  5. Word 中批量修改所有表格格式样式
  6. Python06之分支和循环1(三目运算符)
  7. python3+django报错testserver
  8. FFmpeg中AVFrame.linesize的含义
  9. js图片向下流动
  10. Java8新特性 - 并行流与串行流