Python關(guān)于__name__屬性的含義和作用詳解
Python中的模塊(.py文件)在創(chuàng)建之初會(huì)自動(dòng)加載一些內(nèi)建變量,__name__就是其中之一。Python模塊中通常會(huì)定義很多變量和函數(shù),這些變量和函數(shù)相當(dāng)于模塊中的一個(gè)功能,模塊被導(dǎo)入到別的文件中,可以調(diào)用這些變量和函數(shù)。那么這時(shí) __name__ 的作用就彰顯了,它可以標(biāo)識(shí)模塊的名字,可以顯示一個(gè)模塊的某功能是被自己執(zhí)行還是被別的文件調(diào)用執(zhí)行,假設(shè)模塊A、B,模塊A自己定義了功能C,模塊B調(diào)用模塊A,現(xiàn)在功能C被執(zhí)行了:
如果C被A自己執(zhí)行,也就是說模塊執(zhí)行了自己定義的功能,那么 __name__=='__main__'
如果C被B調(diào)用執(zhí)行,也就是說當(dāng)前模塊調(diào)用執(zhí)行了別的模塊的功能,那么__name__=='A'(被調(diào)用模塊的名字)
其實(shí)換一種說法也就是表示當(dāng)前程序運(yùn)行在哪一個(gè)模塊中
下面舉例說明:
首先自定義模塊Student,在模塊中定義功能Differ()

然后先自身執(zhí)行,結(jié)果如下, __name__=='__main__'
然后B調(diào)用執(zhí)行,結(jié)果 __name__=='Student'
上面出兩次結(jié)果,是因?yàn)閜ython中導(dǎo)入模塊會(huì)先將文件執(zhí)行一遍,如下圖
到這兒可能有人已經(jīng)注意到,上面的 __main__ 在python中作可以為函數(shù)的入口,而實(shí)際工程常用 if __name__=='__main__'來表示整個(gè)工程開始運(yùn)行的入口。此外你如果不想讓功能的某部分被別的模塊調(diào)用執(zhí)行,比如我自定的模塊Student里的‘我的密碼是xxx',只有自己執(zhí)行才可以打印密碼。所有你可以把部分寫在if語句里,只有__name__=='__main__'的時(shí)候才能執(zhí)行。這個(gè)可以這么理解,在if語句之外代碼是最外層的,有點(diǎn)“全局變量”的意思,放入if里面就成了私有的了。
知識(shí)點(diǎn)擴(kuò)充
1.__name__
__name__ 是屬于 python 中的內(nèi)置類屬性,就是它會(huì)天生就存在與一個(gè) python 程序中,代表對(duì)應(yīng)程序名稱。
也分兩種情況:
1)當(dāng)python程序自己執(zhí)行時(shí),__name__變量的值就是:__main__
2) 當(dāng)python程序是作為模塊被導(dǎo)入時(shí),那么__name__變量的值就是:程序的文件名,也就是.py前面的文件名稱。
2.使用場(chǎng)景
一般我們說使用場(chǎng)景,肯定會(huì)根據(jù)該知識(shí)點(diǎn)的功能來判斷。
情況一:比如有個(gè)功能模塊的程序test.py,在該程序里面有一部分是測(cè)試代碼,測(cè)試代碼塊會(huì)輸出內(nèi)容,驗(yàn)證該程序是否能完成我們需求的功能。
但是我們?cè)趯?shí)際導(dǎo)入該模塊時(shí),不需要輸出測(cè)試內(nèi)容。因此可以用if語句判斷__name__的值,進(jìn)而限制測(cè)試代碼是否執(zhí)行。
以上就是腳本之家結(jié)合多篇整理的相關(guān)內(nèi)容,感謝大家的支持。
相關(guān)文章
Python實(shí)現(xiàn)簡(jiǎn)單2048小游戲
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)簡(jiǎn)單2048小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-05-05
Python實(shí)現(xiàn)基于socket的udp傳輸與接收功能詳解
這篇文章主要介紹了Python實(shí)現(xiàn)基于socket的udp傳輸與接收功能,結(jié)合實(shí)例形式詳細(xì)分析了Python使用socket進(jìn)行udp文件傳輸與接收相關(guān)操作技巧及注意事項(xiàng),需要的朋友可以參考下2019-11-11
詳解BeautifulSoup獲取特定標(biāo)簽下內(nèi)容的方法
這篇文章主要介紹了詳解BeautifulSoup獲取特定標(biāo)簽下內(nèi)容的方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12
利用python實(shí)現(xiàn)全屏愛心雨向喜歡的人表白
馬上520了,教大家用Python做一個(gè)下愛心雨的特效,這篇文章主要給大家介紹了關(guān)于利用python實(shí)現(xiàn)全屏愛心雨向喜歡的人表白的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
python中把嵌套的列表合并成一個(gè)列表方法總結(jié)
python中l(wèi)ist這種數(shù)據(jù)結(jié)構(gòu)很常用到,下面這篇文章主要給大家介紹了關(guān)于python中把嵌套的列表合并成一個(gè)列表方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Python實(shí)現(xiàn)日志備份守護(hù)進(jìn)程的示例
本文主要介紹了Python實(shí)現(xiàn)日志備份守護(hù)進(jìn)程的示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-04-04

