python __name__ == ‘__main__’詳細解釋(27)


    學習過C語言或者Java語言的盆友應該都知道程序運行必然有主程序入口main函數,而python卻不同,即便沒有主程序入口,程序一樣可以自上而下對代碼塊依次運行,然后python不少開源項目或者模塊中依然存在 __name__ == “__main__” 這種寫法,具體是上面意思呢?

還有這種操作

一.語義解釋

    1.__name__

    __name__ 是python的內置屬性,是系統全局變量!每一個py文件都有一個屬於自己的__name__:

    如果py文件作為模塊被導入(import),那么__name__就是該py文件的文件名(也稱 模塊名);

    如果py文件直接運行時(Ctrl+Shift+F10),那么__name__默認等於字符串”__main__”;

 

    舉個簡單的例子:假如你名字是張三,在朋友眼中,你是張三(__name__ == '張三');在你自己眼中,你是你自己(__name__ == '__main__')

就是有這種操作

 

    2.”__main__”

    “_ _main_ _” 實際上就是一個字符串,用來鑒別程序入口,沒有太多花里胡哨的東西.

 

    3.__name__ == “__main__”

    當.py文件被直接運行 (Ctrl+Shift+F10)時, if  __name__ == “__main__”  之下的代碼塊將被運行,該語句就相當與python的main主函數入口,示例代碼如下:

    a.新建一個 my_name.py 文件,作為模塊文件:

 

    b.新建一個 python_main.py 文件,作為啟動文件 (Ctrl+Shift+F10):

    輸出結果:

    由此可見,作為啟動文件 python_main.py ,該文件的內置屬性 __name__ 等於 “__main__”,而my_name.py 作為導入模塊,該模塊的 __name__ 等於文件名(也稱模塊名字),所以my_name.py 中的 表達式 if __name__ == “__main__” 並不成立!

 

    當直接將my_name.py作為啟動文件時 (Ctrl+Shift+F10),輸出:

 

    如果py文件作為模塊被導入(import),那么__name__就是該py文件的文件名(也稱 模塊名);

    如果py文件直接運行時(Ctrl+Shift+F10),那么__name__默認等於字符串”__main__”;

 

廢話多

二.作用

    1.__name__ == “__main__” 作為啟動py文件的main函數入口

    2.一個項目中必然會包含多個模塊文件,每個模塊文件在自己寫完代碼之后會做一些簡單的測試用於檢測bug 或者 對自己的函數調用寫一個簡單的示例,而恰到好處的是:__name__ == “__main__”  既不會影響你的測試代碼,也不會影響別人調用你的接口函數。

 

 

驚喜

猜你喜歡:

    1.python模塊

    2.python異常處理

    3.python return邏輯運算表達式

    4.python 字典推導式

    5.python 列表推導式

 

    轉載請注明:猿說Python » python __name__ == “__main__” 詳細解釋

 

技術交流、商務合作請直接聯系博主
掃碼或搜索:猿說python
python教程公眾號
猿說python
微信公眾號 掃一掃關注


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM