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__': 的理解相关推荐

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

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

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

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

  3. python中if __name__ == '__main__': 的解析

    2019独角兽企业重金招聘Python工程师标准>>> python中if __name__ == '__main__': 的解析 当你打开一个.py文件时,经常会在代码的最下面看到 ...

  4. python基础之python中if __name__ == '__main__': 的解析

    当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个 ...

  5. python中 if __name__ == ‘__main__‘

    很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...

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

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

  7. Python中if __name__=='__main__': 理解与总结(看这篇就够了,一文扫清疑惑!)

    前言 在Python当中,如果代码写得规范一些,通常会写上一句if '__name__'=='__main__:'作为程序的入口,但似乎没有这么一句代码,程序也能正常运行.这句代码多余吗?原理又在哪里 ...

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

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

  9. python中if __name__ == '__main__'功能的解析

    [说明] 在使用python进行工作过程中我们经常能够看到脚本或者程序里再结尾处都有**"if name == 'main':"**语句,说到"if name == 'm ...

最新文章

  1. HDOJ2270(How Many Friends Will Be Together With You)
  2. Centos7 安装redis
  3. 单词缩写(abbr.cpp)每日一题
  4. eclipse安装SVN插件报错Unable to connect
  5. php 如何实现关键字查找,php中如何通过关键字查找文件中包含该关键字的所有行内容呢...
  6. 高等数学上-赵立军-北京大学出版社-题解-练习5.3
  7. 正在中止线程 iis_Zephyr线程生命周期及状态
  8. everything的使用
  9. 链表反转的两种实现方法,后一种击败了100%的用户
  10. VIM文本编辑器相关命令实验总结
  11. jquery.nicescroll参数说明
  12. ARINC485和RS485的区别
  13. ESP8266-Arduino编程实例-BH1750FVI环境光传感器驱动
  14. [股票] 现阶段思考感悟
  15. AI作诗:诗三百·人工智能诗歌写作平台
  16. 英语学习网站php,英语学习网站
  17. oracle向上移一行,从底向上第二篇--了解行迁移
  18. 03_美图秀秀实现思路
  19. MTK6592平台 touchpanel驱动设备加载(三)
  20. 高并发系统设计40问 - 学习/实践

热门文章

  1. android 获取和设置屏幕亮度
  2. 三极管驱动(讲的比较好)
  3. 关于竖表转横表的问题
  4. [剑指offer]面试题第[35]题[Leetcode][第138题][JAVA][复杂链表的复制][暴力][HashMap][复制链表]
  5. [Leedcode][JAVA][第680题][验证回文字符串Ⅱ][贪心][递归]
  6. leetcode 42 接雨水 单调栈
  7. 简述汇编语言中的标号有什么规定_2020年秋季学期《汇编语言》在线考试 (适用于2020年12月份考试)【答案标准】...
  8. java项目定时任务_java项目定时任务实现
  9. git连接jenkins_开普勒云平台:如何配置gitlab与Jenkins
  10. 1535C. Unstable String