写此文章的初衷在于笔者碰到一道题目如下:

“假设有Python程序文件a.py,其代码如下:

def main():if __name__ == '__main__':print(1)else:print(2)
main()

若将改程序文件直接运行结果为(),作为模块导入时得到结果为()”

在这里话不多说,直接跑一跑看答案。

可以看到结果分别是1和2。

那么接下来解释为什么是这样一个结果,首先需要说一个关于程序入口的问题。而if __name__ == '__main__'便可以理解为Python 模拟的程序入口,在作为脚本执行时,执行if __name__ == '__main__'下的代码,而作为模块被导入时,被导入的模块中的if __name__ == '__main__'下的代码则不会被执行。

说白了就是如果代码是直接执行的则执行if __name__ == '__main__'下的代码,如果代码时被导入的则不执行。

接下来,便是关于if __name__ == '__main__'中的  “ __name__ ”到底是什么,应该怎么理解。其实,__name__ 是一个内置变量,用于表示当前模块的名字,当代码作为脚本执行时,其中的__name__是__main__,当代码作为模块导入时,其中的__name__是被导入的文件名。

举例如下:

a,b,c三个python文件,a,c分别是作为脚本执行,在b中将a,c 分别导入执行,可以清晰的看到在作为脚本执行时,__name__是__main__,作为模块导入时,其中的__name__是被导入的文件名。

故此,对文章开头提到的题目便可以很清晰的得到结果,第一次作为脚本执行,__name__是__main__,故而执行print(1),作为模块导入,__name__是a,故而执行print(2).

以上!

有关程序入口可以参考if __name__ == '__main__' 如何正确理解 - 姚红 - 博客园 (cnblogs.com)

比较详细。

python 有关 if __name__ == ‘__main__‘ 的正确理解相关推荐

  1. if __name__ == '__main__' 如何正确理解

    if __name__ == '__main__' 如何正确理解 if __name__ == '__main__' 如何正确理解 - 姚红 - 博客园 python编程中的if __name__ = ...

  2. python中的__name__=='__main__'如何简单理解(一)

    1. 摘要: 通俗的理解_name_ == '_main_':假如你叫小明.py,在朋友眼中,你是小明(_name_ == '小明'):在你自己眼中,你是你自己(_name_ == '_main_') ...

  3. if __name__ == '__main__' 如何正确理解?

    本文转载自:https://blog.csdn.net/zhusongziye/article/details/79505803 在大多数编排得好一点的脚本或者程序里面都有这段if __name__ ...

  4. python中if __name__ == ‘__main__‘:的简单理解

    举例说明,这里有两个模块 # ni模块 print("这是1.") if __name__ == '__main__':print("这是2.")'''输出结果 ...

  5. if __name__ == __main__如何正确理解

    粗略来讲,__name__是当前模块,当模块被直接运行时模块名为__main__.这句话的意思是,当模块被直接执行时,代码将运行,当模块是被导入时,代码不被运行 例如,执行one.py 1 # fil ...

  6. Python爬虫笔记——if __name__ == ‘__main__‘ 如何正确理解和__init__和self 的解析

    Python中if name == 'main':的作用和原理 Python中if name == 'main',__init__和self 的解析

  7. Python 中的 if __name__ == __main__ 该如何理解

    Python 中的 if __name__ == "__main__" 该如何理解 原文链接: http://blog.konghy.cn/2017/04/24/python-en ...

  8. Python中if __name__ == '__main__':作用

    Python中if __name__ == '__main__':作用 2012-03-22 11:52:40 分类: Python/Ruby #hello.py def sayHello(): st ...

  9. python 中if __name__ = '__main__' 的作用

    python 中if __name__ = '__main__' 的作用 前言 首先我们要知道在python里面万物皆对象,模块也是对象,并且所有的模块都有一个内置属性 __name__. 一个模块的 ...

最新文章

  1. mysql 多久备份一次_教你如何通过一次单击自动备份mysql数据库
  2. 分片表怎么建表_经验放送!后端开发实战笔记之如何设计大数据量表结构
  3. 【Task5(2天)】模型调参
  4. 搜索引擎ElasticSearchV5.4.2系列一之ES介绍
  5. 虚拟机安装centeros7 无法连接网络 virsh命令找不到 删除多余的vir0 不然dubbo会有问题
  6. Lua语法基础(1)---简介、基本数据类型、表达式
  7. 坐地铁的好心MM们小心啊,周末刚经历了一个地铁新骗术
  8. oracle服务说明
  9. vue样式中背景图片路径_vue打包css文件中背景图片的路径问题
  10. android的opencv调试,Android opencv 2.3.1 调试及应用(第一篇)
  11. Hibernate 中Property中的formula属性的使用
  12. 用MATLAB画出双极性NRZ,[工学]通信原理MATLAB仿真教程第7章.ppt
  13. 主成分分析在SPSS上的实现与结果分析——基于SPSS实验报告
  14. vs2008 sp1 C++ 发布程序
  15. 矩阵卷积运算的具体过程
  16. OA性能调优方案(一)
  17. 点电荷分布matlab仿真,利用Matlab模拟点电荷的电场分布..doc
  18. nlohmann json用法
  19. 必背C语言算法 C语言小写转大写
  20. pycharm注册码,之前的已经过期

热门文章

  1. 【机试题】语言解释器
  2. layui table 单元格内文字、元素块实现优美的换行显示
  3. 常见15个C语言的标准库
  4. Nginx——ubuntu安装Nginx并配置https
  5. [游戏与人生]推荐几款老单机游戏
  6. css sprites——CSS精灵
  7. 论文简述Reversible Data Hiding in Encrypted Images with Two-MSB Prediction加密图像可逆信息隐藏算法
  8. Efficient reversible data hiding for JPEG images with multiple histograms modification(论文阅读)
  9. 当人工智能碰见区块链,会发生什么呢?
  10. 计算机订座系统及操作——CRS介绍