if __name__ == '__main__': 的解释

在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__':意思就是,若是是飞本脚本调用的不输出本脚本调用的结果

相关文章
相关标签/搜索