python - __name__= __main__怎么解釋 怎么用 另外兩個py文件之間的互動關聯
問題描述
name = ’__main__’ 的作用有句話經典的概括了這段代碼的意義:
“Make a script both importable and executable”
意思就是說讓你寫的腳本模塊既可以導入到別的模塊中用,另外該模塊自己也可執行。def foo():? ? print(’in foo’)print(__name__)foo()if __name__==’__main__’:? ? foo()返回結果main ? 意思是__name__=__main,所以if語句判斷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')結果: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')結果: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模塊被導入的話,ob05模塊中的__name__=__main__解釋錯或不對不完善 麻煩完善下?那import是干嘛用呢,就引入了一個func()?name == '__main__' 是什么意思 起什么作用
問題解答
回答1:簡單來說就是每一個Python代碼文件里都可以寫上一段
if __name__ == ’__main__’: doSomething()
這里的dosomething只會在你直接在終端執行這個文件的時候會被調用,而不會在作為包import到其他文件并執行那個文件時調用。
回答2:這樣理解python中的if name == ’main’:https://github.com/pythonpeix...
回答3:__name__:表示模塊,類等的名字;
__main__:表示模塊,xxx.py文件本身.
被直接執行時,對應的模塊名就是__main__,可以在if __name__ == “__main__”:中添加你自己想要的,用于測試模塊,演示模塊用法等代碼。
作為模塊,在其他地方被導入(import)時,模塊名就是本身文件名xxx了。
回答4:函數有兩個主要作用:1、代碼重用。 2、過程分解。這就意味這你寫別的程序的時候可能會調用現在寫的這個函數。編寫好一個函數后,我們需要測試這個函數或者用它做一些工作,那我們就把要做的事情寫在 if __name__==’__main__’: 里面 。二天你寫別的程序調用這個模塊的時候,它會執行 if __name__==’__main__’:前面的函數,而不會執行if __name__==’__main__’:里面的代碼。
相關文章:
1. css - 新手做響應式布局, 斷點過后右側出現空白,求幫助,謝謝。2. python - 啟動Eric6時報錯:’qscintilla_zh_CN’ could not be loaded3. javascript - vue 怎么渲染自定義組件4. javascript - 關于<a>元素與<input>元素的JS事件運行問題5. mysql - 查詢字段做了索引為什么不起效,還有查詢一個月的時候數據都是全部出來的,如果分拆3次的話就沒問題,為什么呢。6. mysql - 記得以前在哪里看過一個估算時間的網站7. 大家好,我想請問一下怎么做搜索欄能夠搜索到自己網站的內容。8. ID主鍵不是自增的嗎 為什么還要加null9. MySQL中的enum類型有什么優點?10. python - 安裝pyspider時出錯:No space left on device:
