Python 中 if __name__ == '__main__': 的理解
1、这段代码的功能
一个 Python 的文件有两种使用的方法,第一是直接作为脚本执行,第二是 import 到其他的 Python 脚本中被调用(模块重用)执行。因此 if __name__ == '__main__':
的作用就是控制这两种情况执行代码的过程,在 if __name__ == '__main__':
下的代码只有在第一种情况下(即文件作为脚本直接执行)才会被执行,而 import 到其他脚本中是不会被执行的。
举个例子,下面在 test.py 中写入如下代码:
print "I'm the first."
if __name__=='__main__':print "I'm the second."
直接执行 test.py 后结果如下,可以成功打印两行字符串。即 if __name__=='__main__':
语句之前和之后的代码都被执行:
I'm the first.
I'm the second.
然后在同一文件夹新建名称为 import_test.py 的脚本,只输入以下代码:
import test
执行 import_test.py 脚本,只输出了第一行字符串。即if __name__=='__main__':
之前的语句被执行,之后的没有被执行:
I'm the first.
2、运行的原理
每个Python模块(Python文件,也就是此处的 test.py 和 import_test.py)都包含内置的变量 __name__
,当运行模块被执行的时候,__name__
等于文件名(包含了后缀.py
);如果 import 到其他模块中,则 __name__
等于模块名称(不包含后缀.py
)。而 '__main__'
等于当前执行文件的名称(包含了后缀.py
)。进而当模块被直接执行时,__name__ == 'main'
结果为真。
同样举例说明,我们在 test.py 脚本的if __name__=='__main__':
之前加入print __name__
,即将__name__
打印出来:
print "I'm the first."
print __name__
if __name__=='__main__':print "I'm the second."
运行结果如下:
I'm the first.
__main__
I'm the second.
可以看出,此时变量__name__
的值为 __main__
;
再执行 import_test.py,模块内容和执行结果如下:
import test
I'm the first.
test
此时,test.py 中的 __name__
变量值为 test
,不满足 __name__=="__main__"
的条件,因此,无法执行其后的代码。
Python 中 if __name__ == '__main__': 的理解相关推荐
- Python中if __name__ == '__main__':作用
Python中if __name__ == '__main__':作用 2012-03-22 11:52:40 分类: Python/Ruby #hello.py def sayHello(): st ...
- python 中if __name__ = '__main__' 的作用
python 中if __name__ = '__main__' 的作用 前言 首先我们要知道在python里面万物皆对象,模块也是对象,并且所有的模块都有一个内置属性 __name__. 一个模块的 ...
- python中if __name__ == '__main__': 的解析
2019独角兽企业重金招聘Python工程师标准>>> python中if __name__ == '__main__': 的解析 当你打开一个.py文件时,经常会在代码的最下面看到 ...
- python基础之python中if __name__ == '__main__': 的解析
当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...
- python中 if __name__ == ‘__main__‘
很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...
- python中的__name__=='__main__'如何简单理解(一)
1. 摘要: 通俗的理解_name_ == '_main_':假如你叫小明.py,在朋友眼中,你是小明(_name_ == '小明'):在你自己眼中,你是你自己(_name_ == '_main_') ...
- Python中if __name__=='__main__': 理解与总结(看这篇就够了,一文扫清疑惑!)
前言 在Python当中,如果代码写得规范一些,通常会写上一句if '__name__'=='__main__:'作为程序的入口,但似乎没有这么一句代码,程序也能正常运行.这句代码多余吗?原理又在哪里 ...
- python中if __name__ == ‘__main__‘:的简单理解
举例说明,这里有两个模块 # ni模块 print("这是1.") if __name__ == '__main__':print("这是2.")'''输出结果 ...
- python中if __name__ == '__main__'功能的解析
[说明] 在使用python进行工作过程中我们经常能够看到脚本或者程序里再结尾处都有**"if name == 'main':"**语句,说到"if name == 'm ...
最新文章
- HDOJ2270(How Many Friends Will Be Together With You)
- Centos7 安装redis
- 单词缩写(abbr.cpp)每日一题
- eclipse安装SVN插件报错Unable to connect
- php 如何实现关键字查找,php中如何通过关键字查找文件中包含该关键字的所有行内容呢...
- 高等数学上-赵立军-北京大学出版社-题解-练习5.3
- 正在中止线程 iis_Zephyr线程生命周期及状态
- everything的使用
- 链表反转的两种实现方法,后一种击败了100%的用户
- VIM文本编辑器相关命令实验总结
- jquery.nicescroll参数说明
- ARINC485和RS485的区别
- ESP8266-Arduino编程实例-BH1750FVI环境光传感器驱动
- [股票] 现阶段思考感悟
- AI作诗:诗三百·人工智能诗歌写作平台
- 英语学习网站php,英语学习网站
- oracle向上移一行,从底向上第二篇--了解行迁移
- 03_美图秀秀实现思路
- MTK6592平台 touchpanel驱动设备加载(三)
- 高并发系统设计40问 - 学习/实践
热门文章
- android 获取和设置屏幕亮度
- 三极管驱动(讲的比较好)
- 关于竖表转横表的问题
- [剑指offer]面试题第[35]题[Leetcode][第138题][JAVA][复杂链表的复制][暴力][HashMap][复制链表]
- [Leedcode][JAVA][第680题][验证回文字符串Ⅱ][贪心][递归]
- leetcode 42 接雨水 单调栈
- 简述汇编语言中的标号有什么规定_2020年秋季学期《汇编语言》在线考试 (适用于2020年12月份考试)【答案标准】...
- java项目定时任务_java项目定时任务实现
- git连接jenkins_开普勒云平台:如何配置gitlab与Jenkins
- 1535C. Unstable String