python之if __name__ == '__main__'

概要:

之前一直在写shell最近在学习python,在学习中看到书上举例的代码有这样一行:

if __name__ == ‘__main__‘

百度看了很多解释也没彻底弄懂,自己又继续研究最后总结一下,如有不对的地方请根正不胜感激。

网上的解释很多都是说这句代码的含义是为了调用。说的对,但是不全,为了更好的理解我写了两个脚本进行测试(这里我直接在虚拟机上编写了学习的时候还是建议使用Python的IDE来提高我们的效率)

脚本1:

[[email protected] tmp]# cat name.py
#!/usr/bin/env python 
def ppy():
  print "python"
def bby():
  print "atiger77"
if __name__ == ‘__main__‘:
  ppy()
  bby()
[[email protected] tmp]#

注释:在name.py中写了一个叫ppy和bby的函数,这两个函数的功能就是输出“python和atiger77”并在结尾处调用它们()。

运行脚本1:

[[email protected] tmp]# python name.py
python
atiger77

运行后发现看到了ppy函数的内容说明符合了if的条件,这里要说明的是当执行脚本自身是肯定符合if __name__ == ‘__main__‘:的情况,既然都是真为什么还要写这个判断呢,我们继续看下去。

脚本2:

[[email protected] tmp]# cat tname.py
from name import *
ppy()  
bby()

注释:脚本2中只有3行内容,第一行使用import命令调用name.py第一个脚本,然后使用第一个脚本中的ppy和bby函数。

脚本2执行结果:

[[email protected] tmp]# python tname.py
python
atiger77

这里看到了ppy和bby函数的输出回显说明调用成功了,接下来修改name.py函数内容。

让我们来注释在name.py中if __name__ == ‘__main__‘:语句,再次测试:

[[email protected] tmp]# cat name.py
def ppy():
  print "python"
def bby():
  print "atiger77"
#if __name__ == ‘__main__‘:
ppy()
bby()
[[email protected] tmp]# python name.py
python
atiger77
[[email protected] tmp]#

注释:这里需要注意的是python严格控制缩进,在注释了if语句后需要将ppy和bby提前否则不会输出内容。

让我们再次执行tname.py,我们可以看到下面的回显:

[[email protected] tmp]# python tname.py
python
atiger77
python
atiger77

可以看出没有了if判断调用的时候会将name.py中全部内容执行了一遍,所以会有输出2次bby和ppy函数的内容。

总结:

这里再回头看下百度上的总结就会很清晰了,当程序是自身运行时,其__name__的值就是字符串"__main__"了,如果是被其他程序调用,那么它的__name__的值就不是字符串"__main__",使用下面这个判断的作用就是使程序只有在自身被运行的情况下才执行,如果只是被调用,那么就不运行了。

由于刚学习python不久写的不对的地方还请指出,本人从事linux运维工作如有志同道合的朋友咱们可以一起学习交流。

微信号:atiger77

python之if __name__ == '__main__'

时间: 2024-10-11 16:42:42

python之if __name__ == '__main__'的相关文章

python中if __name__ == '__main__':

Using a module's __name__ Example? 8.2.? Using a module's __name__ #!/usr/bin/python # Filename: using_name.py if __name__ == '__main__': print 'This program is being run by itself' else: print 'I am being imported from another module' Output $ pytho

【Python中if __name__ == '__main__': 的解析】

在很多Python代码中,在代码的最下方会看到  if __name__ == '__main__':,这段代码到底有什么用呢? 在理解这个语句的作用前,需要知道的是,一般的Python文件后缀为.py,其可以拿来执行,也可以用来作为模块使用import导入.当Python解析器读取一个源文件时它会执行所有的代码.在执行代码前会定义一些特殊的变量.如果解析器运行的模块(源文件)作为主程序,它将会把__name__变量设置成"__main__".如果只是引入其他的模块,__name__变

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

当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个模块的 __name__ 的值取决于您如何应用模块.如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名.但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__". //////

FAQ: Python中if __name__ == '__main__':作用

#hello.pydef sayHello(): str="hello" print(str); if __name__ == "__main__": print ('This is main of module "hello.py"') sayHello() python作为一种脚本语言,我们用python写的各个module都可以包含以上那么一个类似c中的main函数,只不过python中的这种__main__与c中有一些区别,主要体现在:

Python中 if __name__ == '__main__': 详解

一个python文件就可以看作是一个python的模块,这个python模块(.py文件)有两种使用方式:直接运行和作为模块被其他模块调用. __name__:每一个模块都有一个内置属性__name__.而__name__的值取决与python模块(.py文件)的使用方式. 如果是直接运行,那么这个模块的__name__值就是“__main__”: 如果是作为模块被其他模块调用,那么这个模块(.py文件)的__name__值就是该模块(.py文件)的文件名,且不带路径和文件扩展名. 参考: ht

python中if __name__ == '__main__': 介绍

当我们下载一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来简单的介绍一下它的作用 首先我们要知道,模块是对象,并且所有的模块都有一个内置属性 __name__. 如果 import 一个模块,那么模块__name__ 的值通常为模块文件名. 如果以一个标准的程序样直接运行模块,那么模块__name__ 的值将是一个特别缺省"__main__". 所以我们一般用if __name__ == '__main__'来判断是否是在直接运行

python中if __name__ == "__main__":的解释

当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个模块的 __name__ 的值取决于您如何应用模块.如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名.但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__". //////

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

当你打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':,现在就来介 绍一下它的作用. 模块是对象,并且所有的模块都有一个内置属性 __name__.一个模块的 __name__ 的值取决于您如何应用模块.如果 import 一个模块,那么模块__name__ 的值通常为模块文件名,不带路径或者文件扩展名.但是您也可以像一个标准的程序样直接运行模块,在这 种情况下, __name__ 的值将是一个特别缺省"__main__". //////

软件——机器学习与Python,if __name__ == '__main__':函数

if __name__ == '__main__': 想必很多初次接触python都会见到这样一个语句,if __name__ == "__main__": 那么这个语句到底是做什么用的呢?在解释之前,首先要声明的是,不管你是多么小白,你一定要知道的是: 1.python文件的后缀为.py: 2..py文件既可以用来直接执行,就像一个小程序一样,也可以用来作为模块被导入(比如360安全卫士,就是依靠一个个功能模块来实现的,好比360安全卫士本身框架是一个桌面,而上面的图标就是快捷方式,