当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用:

对于编程语言来说,程序都必须要有一个入口,比如java和c#必须要有一个包含main方法的主类来作为程序的入口

而python则不同,它属于脚本语言,它是从脚本的第一行开始执行,没有统一的入口。

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

if __name__ == '__main__' 就相当于是 Python 模拟的程序入口,由于模块之间相互引用,不同模块可能都有这样的定义,而入口程序只能有一个。到底哪个入口程序被选中,这取决于 __name__ 的值。

__name__ 是内置变量,用于表示当前模块的名字,如果一个模块被直接运行,其 __name__ 值为 __main__。

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

举个例子,下面在test.py中写入如下代码:

print "I am the first"

if __name__=="__main__":

print "I am the second"

直接执行test.py 会打印两行 :

I am the first

I am the second

然后在同一文件夹新建名称为import_test.py的脚本,只输入如代码:

import test

执行 import_test.py ,只打印一行 “I am the first”,说明 if __name=="__main__":后面的代码没有执行

我们在test.py脚本的if __name__=="__main__":之前加入print __name__,即将__name__打印出来。文件内容和结果如下

print "I am the first"

print __name__

if __name__=="__main__":

print "I am the second"

I am the first

__main__

I am the second

可以看出,此时变量__name__的值为"__main__";

再执行import_test.py,模块内容和执行结果如下

I am the first

test

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

python里面的之前打过的记忆信息-python中的if __name__ == 'main'相关推荐

  1. python里面的之前打过的记忆信息-python中的记忆:如何缓存函数的运行结果(1)

    Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发. 使用称为"memoization"的强大而方便的缓存技术来加速您的Python程序. ...

  2. python里面的之前打过的记忆信息-Python关键语句备忘录,拯救你的记忆

    今天要介绍的 Python 3 Cheat Sheet 由法国国家科学研究中心(CNRS)的法国机械工程与信息技术实验室(LIMSI)的工程师 Laurent Pointal 总结.这个简单的 Che ...

  3. python里面的之前打过的记忆信息-python 中 __init__方法

    注意1,__init__并不相当于C#中的构造函数,执行它的时候,实例已构造出来了. class A(object): def __init__(self,name): self.name=name ...

  4. if __name__ == __main__:什么意思_秒懂Python编程中的if __name__ == 'main' 的作用和原理...

    来源:菜鸟分析 链接: https://zhuanlan.zhihu.com/p/34112508 一天偶然发现知乎上有篇关于对python编程中的if __name__ == 'main'的理解陈述 ...

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

    <背景> 在大多数编排得好一点的脚本或者程序里面都有这段 if __name__ == 'main': <这段代码的功能> 一个python的文件有两种使用的方法: ➤第一是直 ...

  6. python日历小程序_一个查看网络设备信息Python小程序

    原标题:一个查看网络设备信息Python小程序 网络编程中,最常见的一个问题就是,获取设备信息. 首先我们,要学习如何获取本机的网络信息.我们将用到标准库中的socket库.假如说,我们要查看本机的 ...

  7. python编程中的if __name__ == 'main': 的作用和原理[2]

    这个问题来自于知乎用户的提问,当时看到这个问题,我只是做了下简单的回答.后来我发现,对于很多人来说,更准确的说应该是大部分的 Python 初学者,对这个问题理解的不是很深刻.所以这里我来做下总结,并 ...

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

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

  9. python里面的之前打过的记忆信息-忘了Python关键语句?这份备忘录拯救你的记忆...

    Python 3 Cheat Sheet 一共包含两页,分成了多个框图,涉及基本的 Python 数据结构.数学运算.条件和循环语句.文件读写,以及异常值处理等.在每个框图中,右上角是类型名称,蓝色和 ...

最新文章

  1. 中文实体识别最新SOTA算法
  2. 他是阿里 P11,靠写代码写成合伙人,身家几十亿,没有他,我们可能刷不了淘宝!...
  3. hexdump——Linux系统的二进制文件查看工具
  4. python pillow环境_Python环境Pillow( PIL )图像处理工具使用解析
  5. 大页内存(HugePages)
  6. 系统架构师 项目经理 哪个更有前景_中央空调加地暖与五恒系统,哪个更省钱?...
  7. mips汇编计算开方_东南大学计算机系统综合设计MOOC第5期开课
  8. bzoj5108 [CodePlus2017]可做题 位运算dp+离散
  9. 吴恩达都在做的AI农业到底有什么魔力?
  10. 需要缺少的Web组件才能加载,以及项目加载后显示“不可用”的解决方法
  11. android开发,动态图标,Android动态更新APP图标
  12. java中使用poi导出ppt(图片和表格)
  13. 阿里云Api网关导入Swagger功能简介
  14. 时间序列分析中的移动平均趋势剔除法
  15. iPhone 中常用、好用的提醒类软件(闹钟、提醒事项、日历、滴答清单)
  16. Linux 时间校准与同步
  17. 2000年-2009年华语金曲榜
  18. python程序运行结果始终为0_下列 Python 程序的运行结果是( )。 x=0 y=True print(xy and 'A''B')_学小易找答案...
  19. WIN7 旗舰版 只有“睡眠”没有“休眠”,要怎样添加“休眠”功能?
  20. cad图纸问号怎么转换文字_cad打开后图形文字显示问号该怎么办?

热门文章

  1. Maven笔记(2)-- 常用命令和标准的Maven项目结构
  2. MYSQL不能从远程连接的解决方法
  3. [导入]微软研究院Detour开发包之API拦截技术
  4. 硬链接、软链接的区别
  5. Java设计模式(20)——行为模式之命令模式(Command)
  6. oracle,build path,linux
  7. Sql2008发送Email
  8. 学python买什么书好-python官方推荐30本面向初学者的书籍!你看过几本?
  9. python画图哆啦a梦-Python—turtle画图(哆啦A梦)
  10. python绘制3维图-Python 画出来六维图