在Python代码的编写中,经常会用到这么一句:

if __name__ == "__main__":

      ....

这句代码之前的语句在整个模块被其他文件调用的时候会被运行,而这句代码之后的语句则不会,经过多次的查阅资料,我得出一下的解释:

__name__变量在单独运行此模块(.py文件)时,其表示的内容为”__main__",而当这个模块被其他模块调用时,__name__变量则表示被调用的这个模块的名字(不包含.py这三个字符)。

当模块直接执行的时候,__name__变量="__main__"="__main__",所以此句后边的代码也会被执行。

而当模块被调用的时候,__name__变量="模块名"≠"__main__",所以此句后面的代码不会被执行,得益于此种设定,我们可以自由的划定一个模块内的哪些功能可以被任意调用,哪些功能不能被调用,使用起来更加的方便,因为当我们写出import xxx时,xxx这个模块的内容会被提前加载,若有if __name__ == "__main__",则可以避免全部加载,减少负担(这里的原理是,运行过的py文件会产生一个同名后缀名为pyc的文件,我们知道,Python是一门解释性语言,我们编写好的代码经过解释器解释为计算机可以读懂的二进制语言,这个pyc文件就是不用解释,计算机能够直接运行的文件。

最新文章

  1. centos FTP服务器的架设和配置
  2. LINQ简介和LINQ to SQL语句之Where
  3. Java之hashSet实现引用类型的禁止重复功能
  4. myeclipse断点调试
  5. Image控件播放 GIF文件
  6. yzoi2223集合构造的详细解法
  7. Kolmogorov复杂性
  8. Eclipse正确导入第三方project
  9. SpringMvc处理post请求乱码的filter
  10. Coursera 机器学习笔记(八)
  11. 原生Java代码拷贝目录
  12. 使input文本框不可编辑的3种方法
  13. JavaScript的sleep实现--Javascript异步编程学习
  14. SimpleDateFormat中parse和format的区别
  15. Docker & ASP.NET Core (3):发布镜像
  16. selenium跳过webdriver检测并模拟登录淘宝
  17. jQuery ajax()使用serialize()提交form数据到后台
  18. Jquery on方法绑定事件后执行多次
  19. springmvc中为我们做了什么
  20. c#中的多线程异常 (转载)

热门文章

  1. dotnet 使用 MessagePack 序列化对象
  2. oracle中update语句修改多个字段
  3. Java 学习笔记(9)——java常用类
  4. 0014 标签显示模式:display(重点)
  5. Docker Swarm Mode简介与核心概念
  6. 【题解】P3645 [APIO2015]雅加达的摩天楼(分层图最短路)
  7. FactoryMethodPattern(工厂方法模式)-----Java/.Net
  8. 如何解决Selenium句柄、多窗口问题
  9. 1023 组个最小数 (20 分)C语言
  10. (一)Django项目架构介绍