Python中的 if __name__ == "__main__"

对于Python初学者来说,在看别人代码时经常会看到if __name__ == "__main__",这时心里就开始吐槽:“绝对又是装逼,我特么不写这句话,代码不照样跑得好好的!

我刚开始碰到这行代码时,心里也是这样想的!

吐槽归吐槽,存在必然有存在的道理。现在就来看看这句代码到底是个啥意思,因为这句话能够帮你对Python模块的理解上一个层次。

通过例子来理解

只要你创建了一个模块(一个.py文件),这个模块就有一个内置属性name生成,该模块的 name 的值取决于如何应用这个模块。说人话就是,如果你直接运行该模块,那么__name__ == "__main__";如果你 import 一个模块,那么模块name 的值通常为模块文件名。

如,创建一个test1.py:

def func():print('hello, world!')if __name__ == "__main__":func()

模块中,首先定义了函数func(),用来打印出hello, world!,然后判断__name__ 是否等于 __main__,如果等于,有打印,反之则反,现在运行该模块,结果为:

hello, world!

说明__name__ 等于 __main__

这时,输入代码:

再创建一个test2.py:

import test1print('bye, world!')

模块中,首先import test1,然后打印bye, world!做测试用,运行该模块,结果为:

bye, world!

运行结果仅有bye, world!,说明__name__ 不等于 __main__

通过上面test1.py和test2.py两个模块,我们现在可以得出一个非常实用的结论: 如果模块是被直接运行的,则代码块被运行,如果模块被import,则代码块不被运行。

2020-12-11 Python中的 if __name__ == “__main__“相关推荐

  1. 如何简单地理解Python中的if __name__ == '__main__'

    如何简单地理解Python中的if __name__ == '__main__' 文章目录: 一.摘要 二. 程序入口 虽然已经知道这个具体的用法,但是这篇文章有很多细节写的还是很好,决定转载一下,日 ...

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

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

  3. python中使用if __name__ == '__main__':

    引子 在python中,假设在一个test1.py的模块中定义了一个foo函数,然后调用函数foo进行测试的时候会产生一个内存空间.当你把这个模块导入到test2.py模块中,接下来如果在test2. ...

  4. Python中的if __name__ == ‘__main__‘

    if name == 'main'的意思是:当.py文件被直接运行时,if name == 'main'之下的代码块将被运行:当.py文件以模块形式被导入时,if name == 'main'之下的代 ...

  5. 如何快速简单粗暴地理解Python中的if __name__ == ‘__main__‘

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

  6. 解惑(二)----- 如何通俗地理解Python中的if __name__ == ‘__main__‘

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

  7. 简单理解Python中的if __name__ == '__main__'

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

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

    程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等.如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要 ...

  9. 一个实例告诉你Python中关于 if __name__ == ‘__main__‘ 有何作用

    文章目录 前言 正文 .py源文件 实例现象 运行原理 前言 相信大部分开发者对于"程序入口"这个概念并不陌生.对于很多编程语言来说,程序都必须要有一个入口,比如既保留C语言面向过 ...

最新文章

  1. HTTP协议中的chunked编码解析
  2. “比特币耶稣”Roger Ver:比特币现金分叉没有技术论据支持
  3. 无监督学习:无监督降维
  4. jena dataset 增删改查
  5. PHPUNIT 单元测试
  6. linux nvme的sendfile流程
  7. 2020中国移动创客马拉松大赛移动云专题赛决赛成功举办
  8. 正定二次函数的共轭梯度法matlab实现
  9. 密码技术学习(8.1)-数字证书简介
  10. 扬声器阻抗曲线与对应的频率响应曲线
  11. 原神梦里花花种在哪种
  12. 一文详解立体匹配(附代码)
  13. 关于φ与Φ函数与序列中分数个数的讨论
  14. WiFi以及WLAN技术介绍
  15. LOG的含义 : Mysql 之 binlog介绍
  16. MySQL8.0安装失败
  17. 5.Hiveguigun滚(ノ`Д)ノ竟然竞争谨慎谨慎谨慎哈喇子罢工八公
  18. krita 平涂 线稿上色 颜色蒙版
  19. 建立用例模型应当注意的问题
  20. 初次联系导师短信模板_上海大学考研复试:如何联系导师

热门文章

  1. 条件随机场(conditional random fields) 及代码实现
  2. goland 远程调试go_手把手教你学Go语言,基础环境配置和Hello World
  3. TensorFlow官方入门实操课程-全连接神经网络分类
  4. 李宏毅深度学习——Tips for Deep Learning
  5. Oozie基于Hue全流程调度
  6. 华为,为什么让全世界都感到害怕?
  7. 流行的就是最好的:Android开发者的职场规划
  8. 也谈1+2+3+...+n的解答
  9. Spring5源码 - 04 invokeBeanFactoryPostProcessors 源码解读_1
  10. Spring Cloud【Finchley】-10Hystrix监控