python中 if__name__ == "__main__"的理解

有時候經常看到 python 代碼中含有 if __name__ == '__main__' 的代碼 ,但是卻一直不知道是什麼意思,可以通過相應的代碼去試驗即可知道其作用。

一、 理解

       我們知道每個python文件既可以被直接執行,則可以作爲腳本導入到其他文件中。從而構建各個模塊的聯繫。而 if__name__ == '__main__' 的作用也是用來區分是自己作爲自己的文件進行執行的,還是被導入到其他文件當做腳本使用。爲了更好的區分,看如下例子:

    步驟一: 新建一個文件爲:test.py 的文件,文件內容爲:

  

   步驟二:如果將上述作爲一個自己的腳本,即直接對上述腳本進行運行,則輸出爲如下內容:

 結論1:由上可知,直接作爲腳本運行,則其文件內的所有內容都會被執行,包括 if __name == '__main__'前後的所有內容。

此時內置的 __name__ 屬性即爲 "__main__"  。即由此可知,當運行自己這個文件時,內置的屬性__name__ 即爲__main__

   步驟三: 在上述test.py文件的同級目錄下 再新建一個文件爲 import_test.py的文件,其內部的內容爲:

                 【注:這個文件把上述的文件進行了導入 上述文件名爲test.py ,但作爲導入模塊時,導入爲test 沒有後綴.py】

   步驟四:執行import.py 文件,則運行結果爲如下:

結論2:由上可知,當test.py 作爲腳本被導入到import_test.py文件內時,test.py文件裏 if __name__ == '__main__'外部的內容都被執行了,而其內部的內容沒有被執行,因爲結果可知,此時test.py作爲腳本導入到其他文件時被執行時的__name__已經不是原來自己執行自己的__main__了,而是變成了它自己的模塊名,即__name__ = 'test' 【沒後綴】,而非__main__了。索引被導入執行的代碼的__name__不滿足原來的條件。而import_test.py內部的if __name__ = '__main__' 則會被執行,因爲它是執行自己的代碼。而非導入到其他文件內被執行。

總而言之:個人理解是 一個py文件自己直接被執行時,其內部的__name__ == '__main__'  。而這個py文件被導入到其他文件時執行時,這個py文件的__name__ 即不是__main__了,而是變成了這個py文件的文件名[不包含後綴.py]

 

作用:有了這個區別,我們就可以使用 if __name__  == '__main__' 內部寫測試代碼,自己運行自己這個纔可以檢測的內容,但是當別人調用時,這些測試代碼不會被執行。用來區分是自己執行還是別人調用。

以上個人理解,可能不一定準確,有問題可指正,謝謝!

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章