if __name__ == 'main':

功能


一个python的文件有两种使用的方法,第一是直接作为脚本执行,第二是import到其他的python脚本中被调用(模块重用)执行。

if __name__ == 'main': 的作用:

就是控制这两种情况执行代码的过程,在“if __name__ == 'main': ”下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而import到其他脚本中是不会被执行的

原理


每个python模块(python文件,也就是*.py)都包含内置的变量__name__。

1. 当运行模块(A.py)作为脚本自己去运行的话,对应的模块名始终叫做__main__,即模块A.py文件本身,而__name__等于模块名称,也就等于__main__;

2. 如果模块(A.py)import到其他模块(B.py)中,对应的模块名叫做A,则__name__等于模块名称A。

所以,当模块被直接执行时,__name__ == '__main__'结果为真;当模块被import到其他的python脚本中被调用执行,不满足__name__=="__main__"的条件,因此,无法执行其后的代码。

test.py

print("I'm the first.")
print(__name__)
if __name__=="__main__":
print("I'm the second.")

python test.py的结果:

I'm the first.
__main__
I'm the second.

import_test.py

import test

python import_test.py的结果:

I'm the first.
test

此时,test.py中的__name__变量值为test,不满足__name__=="__main__"的条件,因此,无法执行其后的代码。

__name__


如果是放在Modules模块中,就表示是模块的名字;

如果是放在Classs类中,就表示类的名字

__main__


模块第一次被导出(import)后,系统会自动为其创建一个域名空间(namespace);(模块,都是有自己的名字的)此处的脚本的主模块的名字,始终都叫做__main__。

【参考文档】

python编程中的if __name__ == 'main': 的作用和原理:http://www.dengfeilong.com/post/60.html

Python中的__name__和__main__含义详解:https://blog.csdn.net/jjwen/article/details/53084882

Python中的__name__和__main__含义详解: https://www.crifan.com/python_detailed_explain_about___name___and___main__/comment-page-1/

if __name__ == 'main': 的作用和原理的更多相关文章

  1. python编程中的if __name__ == 'main': 的作用和原理

    在大多数编排得好一点的脚本或者程序里面都有这段if __name__ == 'main': ,虽然一直知道他的作用,但是一直比较模糊,收集资料详细理解之后与打架分享. 1.这段代码的功能 一个pyth ...

  2. python if __name__ == 'main' 的作用和原理()

    相信初学者在学习Python的过程中,不可避免的总会遇到 if __name__ == 'main'语句,虽然一直知道它的作用,但是可能一直比较模糊,今天菜鸟分析就与大家一起举例说说我的理解. 举个例 ...

  3. Python中if __name__ == 'main' 的作用和原理

    参考网址:http://mp.weixin.qq.com/s/kxxhOQ7KB_VMwWeUENX7OQ t1.py: print('Loving Python') def main(): prin ...

  4. Python 中if __name__ == '__main__': 的作用和原理

    转自https://blog.csdn.net/weixin_42660771/article/details/84035153 1.代码的功能 一个python的文件有两种使用的方法,第一是直接作为 ...

  5. 如何理解python中的if __name__=='main'的作用

    一. 一个浅显易懂的比喻 我们在学习python编程时,不可避免的会遇到if __name__=='main'这样的语句,它到底有什么作用呢? <如何简单地理解Python中的if __name ...

  6. if __name__ == '__main__'的作用和原理

    最简单的理解就是这样: __name__ 是当前模块名,当模块被直接运行时,模块名为 __main__. 所以 if __name__ == '__main__' 这句话的意思就是当前模块被直接运行时 ...

  7. Python中if __name__ == '__main__':的作用和原理

    if __name__ == '__main__':的作用 一个python文件通常有两种使用方法,第一是作为脚本直接执行,第二是 import 到其他的 python 脚本中被调用(模块重用)执行. ...

  8. python编程中的if __name__ == 'main与windows中使用多进程

    if __name__ == 'main 一个python的文件有两种使用的方法,第一是直接作为程序执行,第二是import到其他的python程序中被调用(模块重用)执行. 因此if __name_ ...

  9. python中的if __name__ == 'main'

    当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用: 对于编程语言来说,程序都必须要有一个入口,比如java和c#必须要 ...

随机推荐

  1. car的旅行路线

    https://www.luogu.org/problemnew/show/P1027 题目描述 又到暑假了,住在城市A的Car想和朋友一起去城市B旅游.她知道每个城市都有四个飞机场,分别位于一个矩形 ...

  2. Poj2688cleaningrobot

    这道题让我们求一个地图上的各个点之间的最短路径说白了旅行商问题. 那么我们先用一个裸的BFS求出各个点之间的最短距离,然后我们再枚举各个点的全排列即可 这道题的细节很多,详见注释 上代码~ #incl ...

  3. 测试CentOS-7-x86_64-Minimal-1708.iso这种光盘安装效果

    在dvd1光盘安装选择mininal时有292个包 [root@localhost ~]# rpm -qa|wc -l 292 [root@localhost ~]# 测试下使用mininal的iso ...

  4. Zuul网关总结

    Zuul是Netflix开源的网关服务(gateway service)(https://github.com/Netflix/zuul),提供动态路由.监控.弹性.安全性等功能.最近在公司的项目中用 ...

  5. 密码疑云 (2)——RSA加密机制需要的数学知识

    在公钥密码体制提出不久,人们就找到其中的三种,其中最著名的当属RSA体制.RSA是一种非对称加密体制,在公开密钥加密和电子商业中被广泛使用.RSA是1977年由罗纳德·李维斯特(Ron Rivest) ...

  6. Sublime Text3 离线安装Package Control并使用GBK编码 --转自https://blog.csdn.net/swhard/article/details/78930371

    1.关闭Sublime Text 3,去https://github.com/wbond/package_control/releases下载一个zip包,我下载的是 2.将包内的顶层文件夹解压至C: ...

  7. Excel文件上传,高亮错误的行和列

    /// <summary> /// Excel模板写入错误信息 /// </summary> /// <param name="fileName"&g ...

  8. 一个简单的python爬虫程序

    python|网络爬虫 概述 这是一个简单的python爬虫程序,仅用作技术学习与交流,主要是通过一个简单的实际案例来对网络爬虫有个基础的认识. 什么是网络爬虫 简单的讲,网络爬虫就是模拟人访问web ...

  9. 2018总结-->2019新目标

    2018完成的事情: ①考到了驾照: ②刷了很多题,春季找到了实习,赚到了去日本旅游的经费和2019毕业租房的预算,最后签了offer: ③去了西安.天津.山西,看到了不一样的人和事: ④发了小论文, ...

  10. SSO单点登录三种情况的实现方式详解

    单点登录(SSO——Single Sign On)对于我们来说已经不陌生了.对于大型系统来说使用单点登录可以减少用户很多的麻烦.就拿百度来说吧,百度下面有很多的子系统——百度经验.百度知道.百度文库等 ...