在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__':意思就是,若是是飛本腳本調用的不輸出本腳本調用的結果