python - __name__= __main__怎么解釋 怎么用 另外兩個(gè)py文件之間的互動(dòng)關(guān)聯(lián)
問(wèn)題描述
name = ’__main__’ 的作用有句話經(jīng)典的概括了這段代碼的意義:
“Make a script both importable and executable”
意思就是說(shuō)讓你寫(xiě)的腳本模塊既可以導(dǎo)入到別的模塊中用,另外該模塊自己也可執(zhí)行。def foo():? ? print(’in foo’)print(__name__)foo()if __name__==’__main__’:? ? foo()返回結(jié)果main ? 意思是__name__=__main,所以if語(yǔ)句判斷True。
ob05.pydef func():? ? print('func() in ob05.py')print('top-level in ob05.py')
if name == '__main__':? ? print('ob05.py is being run directly')else:? ? print('ob05.py is being imported into another module')結(jié)果:top-level in ob05.pyob05.py is being run directly
ob06.pyimport ob05print('top-level in ob06.py')ob05.func()if name == '__main__':? ? print('ob06.py is being run directly')else:? ? print('ob06.py is being imported into another module')結(jié)果:top-level in ob05.pyob05.py is being imported into another moduletop-level in ob06.pyfunc() in ob05.pyob06.py is being run directly
Thus, when module one gets loaded, its name equals 'one' instead of __main__.意思是ob05模塊被導(dǎo)入的話,ob05模塊中的__name__=__main__解釋錯(cuò)或不對(duì)不完善 麻煩完善下?那import是干嘛用呢,就引入了一個(gè)func()?name == '__main__' 是什么意思 起什么作用
問(wèn)題解答
回答1:簡(jiǎn)單來(lái)說(shuō)就是每一個(gè)Python代碼文件里都可以寫(xiě)上一段
if __name__ == ’__main__’: doSomething()
這里的dosomething只會(huì)在你直接在終端執(zhí)行這個(gè)文件的時(shí)候會(huì)被調(diào)用,而不會(huì)在作為包import到其他文件并執(zhí)行那個(gè)文件時(shí)調(diào)用。
回答2:這樣理解python中的if name == ’main’:https://github.com/pythonpeix...
回答3:__name__:表示模塊,類等的名字;
__main__:表示模塊,xxx.py文件本身.
被直接執(zhí)行時(shí),對(duì)應(yīng)的模塊名就是__main__,可以在if __name__ == “__main__”:中添加你自己想要的,用于測(cè)試模塊,演示模塊用法等代碼。
作為模塊,在其他地方被導(dǎo)入(import)時(shí),模塊名就是本身文件名xxx了。
回答4:函數(shù)有兩個(gè)主要作用:1、代碼重用。 2、過(guò)程分解。這就意味這你寫(xiě)別的程序的時(shí)候可能會(huì)調(diào)用現(xiàn)在寫(xiě)的這個(gè)函數(shù)。編寫(xiě)好一個(gè)函數(shù)后,我們需要測(cè)試這個(gè)函數(shù)或者用它做一些工作,那我們就把要做的事情寫(xiě)在 if __name__==’__main__’: 里面 。二天你寫(xiě)別的程序調(diào)用這個(gè)模塊的時(shí)候,它會(huì)執(zhí)行 if __name__==’__main__’:前面的函數(shù),而不會(huì)執(zhí)行if __name__==’__main__’:里面的代碼。
相關(guān)文章:
1. css - 對(duì)于類選擇器使用的問(wèn)題2. javascript - 奇怪的Symbol的問(wèn)題3. python - 為什么在main()函數(shù)里result 會(huì)變成那樣?4. javascript - Web微信聊天輸入框解決方案5. angular.js - angular ng-class里面的引號(hào)問(wèn)題6. docker - 如何修改運(yùn)行中容器的配置7. 網(wǎng)頁(yè)爬蟲(chóng) - 用Python3的requests庫(kù)模擬登陸B(tài)ilibili總是提示驗(yàn)證碼錯(cuò)誤怎么辦?8. javascript - es6將類數(shù)組轉(zhuǎn)化成數(shù)組的問(wèn)題9. javascript - 有沒(méi)有什么好的圖片懶加載的插件,需要包含監(jiān)聽(tīng)頁(yè)面滾動(dòng)高度,然后再加載的功能10. html - vue項(xiàng)目中用到了elementUI問(wèn)題
