Python中的main函數(shù)與import用法
main函數(shù)與import用法
在python中,如果自己封裝的庫文件中有函數(shù)外的語句,那么這些語句是會在庫函數(shù)被導(dǎo)入時自動執(zhí)行的,這樣就會出現(xiàn)一些奇怪的問題,一個例子如下所示。
目錄結(jié)構(gòu)如下
- A.py
- B.py
B.py中的內(nèi)容如下:
def print_B():
? ? print("B")
print("starting B")A.py中使用import導(dǎo)入print_B()方法:
from B import print_B print_B()
結(jié)果如下:
starting B
B
可以發(fā)現(xiàn)B.py中的函數(shù)外語句是會自動先執(zhí)行的。但有時候我們確實希望直接運行封裝的庫能夠執(zhí)行某些功能,但又不希望這些功能在被import的時候被觸發(fā),這個時候,就可以把這部分功能顯式的放在main方法中。
修改后的B.py如下所示:
def print_B():
? ? print("B")
if __name__ == "__main__":
? ? print("starting B")此時運行A.py,結(jié)果如下:
B
main函數(shù)的作用以及解釋
python 中name == ‘__main__’ 的作用
- 經(jīng)典的英文解釋:Make a script both importable and executable
- 中文解釋:使腳本可以被調(diào)用import并且也可以直接運行
1、直接運行
# cat test_fun.py
def fun():
? ? print(__name__)
? ? print('this is fun')
if __name__ == '__main__':
? ? fun()
? ? print('this is main')python test_fun.py __main__ this is fun this is main
2、被調(diào)用import
>>> import test_fun >>> test_fun.fun() test_fun this is fun
調(diào)用導(dǎo)入時:此處輸出沒有顯示”main“,也就是說模塊name = ‘main’ 下面的代碼并未執(zhí)行,main函數(shù)沒有執(zhí)行。
這個功能還有一個用處:
調(diào)試代碼的時候,在”if name == ‘main‘“中加入一些我們的調(diào)試代碼,我們可以讓外部模塊調(diào)用的時候不執(zhí)行我們的調(diào)試代碼,但是如果我們想排查問題的時候,直接執(zhí)行該模塊文件,調(diào)試代碼能夠正常運行!
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python 給下載文件顯示進(jìn)度條和下載時間的實現(xiàn)
這篇文章主要介紹了Python 給下載文件顯示進(jìn)度條和下載時間的代碼,本文通過實例代碼截圖相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-04-04
Python基礎(chǔ)之python循環(huán)控制語句break/continue詳解
Python中提供了兩個關(guān)鍵字用來控制循環(huán)語句,分別是break和continue,接下來通過兩個案例來區(qū)分這兩個控制語句的不同,感興趣的朋友一起看看吧2021-09-09
python腳本設(shè)置超時機制系統(tǒng)時間的方法
這篇文章主要介紹了python腳本設(shè)置超時機制系統(tǒng)時間的方法,感興趣的小伙伴們可以參考一下2016-02-02
caffe binaryproto 與 npy相互轉(zhuǎn)換的實例講解
今天小編就為大家分享一篇caffe binaryproto 與 npy相互轉(zhuǎn)換的實例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
Python使用Slider組件實現(xiàn)調(diào)整曲線參數(shù)功能示例
這篇文章主要介紹了Python使用Slider組件實現(xiàn)調(diào)整曲線參數(shù)功能,結(jié)合實例形式分析了Python使用matplotlib與Slider組件進(jìn)行圖形繪制相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
Python descriptor(描述符)的實現(xiàn)
這篇文章主要介紹了Python descriptor(描述符)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11

