生信必备的Python入门到进阶干货,已整理在菜单栏,敬请查阅

在写Python脚本时,总会遇到 if __name__ == '__main__',生信背景的我们有必要了解这个是啥。

举个例子,新建 example_module.py:

print('入门BioPython')def main():    print('进阶BioPython')if __name__ == '__main__':    main()    print('大师BioPython')

运行:

入门BioPython进阶BioPython大师BioPython

然后,在同一文件夹下,新建 main.py:

import example_module

运行:

入门BioPython

与之前 example_module.py 代码运行结果相比,只输出了"入门BioPython"

, if __name__=="__main__": 之前的语句被执行,之后的并没有被执行。

现在,我们在 example_module.py的 if __name__ == "__main__": 之前加一行代码,将 __name__ 打印出来:

print('入门BioPython')def main():    print('进阶BioPython')print(__name__)if __name__ == '__main__':    main()    print('大师BioPython')

运行结果如下:

入门BioPython__main__进阶BioPython大师BioPython

可以看出,此时变量 __name__ 的值为 "__main__" 。

再次执行 main.py,执行结果如下:

入门BioPythonexample_module

此时,example_module.py 中的__name__变量值为“example_module”,不满足 __name__=="__main__"的条件,无法执行相关代码块。

由于每个Python文件都包含内置的变量:__name__,当运行模块被直接执行的时候,__name__等于文件名(包含后缀.py)。如果import到其他模块中,则__name__等于模块名(不包含后缀.py)。重点:“__main__”等于当前执行文件的名称(包含后缀.py)。所以当模块被直接执行时,__name__ == '__main__';而当模块被import到其他模块中时,__name__ != '__main__'。

简而言之:当模块直接运行时,条件成立,代码将被运行。当模块被导入时,条件不成立,代码不运行。

if __name__ == __main___一文搞懂 if __name__ == #39;__main__#39;相关推荐

  1. 一文搞懂RNN(循环神经网络)

    基础篇|一文搞懂RNN(循环神经网络) https://mp.weixin.qq.com/s/va1gmavl2ZESgnM7biORQg 神经网络基础 神经网络可以当做是能够拟合任意函数的黑盒子,只 ...

  2. 一文搞懂 Python 的 import 机制

    一.前言 希望能够让读者一文搞懂 Python 的 import 机制 1.什么是 import 机制? 通常来讲,在一段 Python 代码中去执行引用另一个模块中的代码,就需要使用 Python ...

  3. python语言语句快的标记是什么_一文搞懂Python程序语句

    原标题:一文搞懂Python程序语句 程序流 Python 程序中常用的基本数据类型,包括: 内置的数值数据类型 Tuple 容器类型 String 容器类型 List 容器类型 自然的顺序是从页面或 ...

  4. 一文搞懂 Java 线程中断

    转载自   一文搞懂 Java 线程中断 在之前的一文<如何"优雅"地终止一个线程>中详细说明了 stop 终止线程的坏处及如何优雅地终止线程,那么还有别的可以终止线程 ...

  5. 一文搞懂HMM(隐马尔可夫模型)-Viterbi algorithm

    ***一文搞懂HMM(隐马尔可夫模型)*** 简单来说,熵是表示物质系统状态的一种度量,用它老表征系统的无序程度.熵越大,系统越无序,意味着系统结构和运动的不确定和无规则:反之,,熵越小,系统越有序, ...

  6. 一文搞懂如何使用Node.js进行TCP网络通信

    摘要: 网络是通信互联的基础,Node.js提供了net.http.dgram等模块,分别用来实现TCP.HTTP.UDP的通信,本文主要对使用Node.js的TCP通信部份进行实践记录. 本文分享自 ...

  7. 【UE·蓝图底层篇】一文搞懂NativeClass、GeneratedClass、BlueprintClass、ParentClass

    本文将对蓝图类UBlueprint的几个UClass成员变量NativeClass.GeneratedClass.BlueprintClass.ParentClass进行比较深入的讲解,看完之后对蓝图 ...

  8. 一文搞懂AWS EC2, IGW, RT, NAT, SG 基础篇下

    B站实操视频更新 跟着拉面学习AWS--EC2, IGW, RT, NAT, SG 简介 长文多图预警,看结论可以直接拖到"总结"部分 本文承接上一篇文章介绍以下 AWS 基础概念 ...

  9. 一文搞懂CAN FD总线协议帧格式

    目录 1.为什么会出现CAN FD? 2.什么是CAN FD? 3.CAN FD和CAN总线协议帧异同 4.解析CAN FD帧结构 4.1.帧起始 4.2.仲裁段 4.3.控制段 4.4.数据段 4. ...

最新文章

  1. python【数据结构与算法】二分模板
  2. 老男孩教育每日一题-第108天-php-fpm优化关闭危险参数有哪些?
  3. Kubernetes 时代的安全软件供应链
  4. 【Python】聊聊Pandas的前世今生
  5. 2018,抢票大作战
  6. 2.5.1 MySQL数据库备份恢复基础讲解
  7. 服务器应用缓存热点问题思考
  8. 第六章 统计量及其抽样分布
  9. JavaWeb前台异常处理
  10. android 返回图标布局,Android 开发BottomNavigationView学习
  11. 做技术的你,如果别人找你创业,该怎么办?
  12. 南方cass字体样式设置_cass改变字体格式 cass字体样式管理器
  13. 数字地-DGND与模拟-AGND地的大学问
  14. SIRS传染病模型求解及MATLAB实现
  15. Ajax读取本地json文件
  16. 腾讯、华为角逐“云游戏”
  17. 京东API item_search - 按关键字搜索商品
  18. 百度地图转高德地图(火星坐标)高德地图(火星坐标)转百度地图
  19. Modelarts培训第一次
  20. 前端面试总结以及面试题

热门文章

  1. Python: SystemError: Unknown opcode
  2. 【Proteus仿真8086】简单IO接口实验——无条件传输和查询方式
  3. 贺利坚老师汇编课程42笔记:DIV除法指令
  4. 关于8086七种寻址方式的练习
  5. cmd下dir后导入oracle数据库,Oracle在dos命令下导出导入
  6. PHP/JS中获取当前页面的完整URL
  7. ZJOI2008 生日聚会
  8. Activiti6.0 安装出错 log4j:ERROR setFile(null,true) call failed.
  9. Linux FastDFS 分布式文件系统安装
  10. 数据库对象之存储过程