在python中python
if __name__ == '__main__': 的解释为
有句话经典的归纳了这段代码的意义:ide
“Make a script both importable and executable”函数
意思就是说让你写的脚本模块既能够导入到别的模块中用,另外该模块本身也可执行。spa
在python中每个python文件都是一个模块,别的python文件或者函数均可以调用到它,orm
如文件test1.py中有函数printinfoip
在文件test2.py中须要调用test1.py中的printinfo这个函数就须要在test2.py这个文件中导入模块test1.py如:it
在test2.py中就有table
import test1ast
test1.printinfoclass
这样就能调用调用test1中的printinfo函数了,可是若是在test1.py中自己就有在调用printinfo这个函数,并且有输出了,那么在test2.py这个文件中调用printinfo就会致使有test1.py这个模块中的printinfo和test2.py这两个输出,会很乱,
可是若是咱们加上了if __name__ == '__main__':
test2.py在调用test1.py的时候就只会有test2.py这个printinfo这个函数的输出,这样就不须要解释了吧!
他的做用就是,若是函数是自己文件调用的话输出的是函数,本文件的输出结果;若是不是本文件调用的话输出的就是其余文件调用的输出结果,
看下列子吧:
[root@master test]# cat main.py
#!/usr/bin/python
def printinfo(s,d):
print s,d
#if __name__=='__main__':
printinfo('hello world,ll','hell')
[root@master test]# cat bb.py
#!/usr/bin/python
import main
main.printinfo('hello','world')
[root@master test]# python main.py
hello world,ll hell
[root@master test]# python bb.py
hello world,ll hell
hello world
如今很明显,我在没有加上if __name__ == '__main__':的时候在bb脚本调用main脚本打印出来的是2个脚本一块儿的输出,
如今我加上if __name__ == '__main__':看下结果
[root@master test]# cat main.py
#!/usr/bin/python
def printinfo(s,d):
print s,d
if __name__=='__main__':
printinfo('hello world,ll','hell')
[root@master test]# python bb.py
hello world
加上他的结果就是只输出了脚本bb的结果,
总结,若是脚本间的互相调用,想要别的脚本也输出本脚本的函数结果就不用加上if __name__=='__main__':
若是不想别的脚本输出本脚本调用的结果就加上。
总之if __name__=='__main__':意思就是,若是是飞本脚本调用的不输出本脚本调用的结果