學習過C語言或者Java語言的盆友應該都知道程序運行必然有主程序入口main函數(shù),而python卻不同,,即便沒有主程序入口,,程序一樣可以自上而下對代碼塊依次運行,然后python不少開源項目或者模塊中依然存在 __name__ == “__main__” 這種寫法,,具體是上面意思呢,? 一.語義解釋1.__name____name__ 是python的內(nèi)置屬性,是系統(tǒng)全局變量,!每一個py文件都有一個屬于自己的__name__: 如果py文件作為模塊被導入(import),,那么__name__就是該py文件的文件名(也稱 模塊名); 如果py文件直接運行時(Ctrl+Shift+F10),,那么__name__默認等于字符串”__main__”; 舉個簡單的例子:假如你名字是張三,,在朋友眼中,你是python基礎教程張三 2.”__main__”“_ _main_ _” 實際上就是一個字符串,用來鑒別程序入口,,沒有太多花里胡哨的東西. 3.__name__ == “__main__”當.py文件被直接運行 (Ctrl+Shift+F10)時,, if __name__ == “__main__” 之下的代碼塊將被運行,該語句就相當與python的main主函數(shù)入口,,示例代碼如下: a.新建一個 my_name.py 文件,,作為模塊文件: # !usr/bin/env python# -*- coding:utf-8 _*-"""@Author:何以解憂 @Blog(個人博客地址): shuopython.com @WeChat Official Account(微信公眾號):猿說python @Github:www.github.com @File:my_name.py @Time:2019/10/14 22:02 @Motto:不積跬步無以至千里,不積小流無以成江海,,程序人生的精彩需要堅持不懈地積累,!""" b.新建一個 python_main.py 文件,作為啟動文件 (Ctrl+Shift+F10): 輸出結果: my_name.py __name__: my_name python_main.py __name__: __main__ 由此可見,,作為啟動文件 python_main.py ,,該文件的內(nèi)置屬性 __name__ 等于 “__main__”,而my_name.py 作為導入模塊,,該模塊的 __name__ 等于文件名(也稱模塊名字),,所以my_name.py 中的 表達式 if __name__ == “__main__” 并不成立! 當直接將my_name.py作為啟動文件時 (Ctrl+Shift+F10),,輸出: my_name.py __name__: __main__ 如果py文件作為模塊被導入(import),,那么__name__就是該py文件的文件名(也稱 模塊名); 如果py文件直接運行時(Ctrl+Shift+F10),,那么__name__默認等于字符串”__main__”; 二.作用1.__name__ == “__main__” 作為啟動py文件的main函數(shù)入口 2.一個項目中必然會包含多個模塊文件,,每個模塊文件在自己寫完代碼之后會做一些簡單的測試用于檢測bug 或者 對自己的函數(shù)調用寫一個簡單的示例,而恰到好處的是:__name__ == “__main__” 既不會影響你的測試代碼,,也不會影響別人調用你的接口函數(shù),。
|
|