[英]Python IDLE: Run main?
我在IDLE:
>>> import mymodule
>>> # ???
使用以下命令導入模塊后:
if __name__ == '__main__':
doStuff()
我實際上如何從IDLE調用main
?
__name__ == '__main__'
上的if條件旨在使代碼在直接執行模塊時運行,而在導入模塊時不運行。 實際上,沒有像Java這樣的“主”概念。 解釋為Python后,在導入/運行模塊時將讀取並執行所有代碼行。
Python提供了__name__
機制,以區分導入大小寫與作為腳本運行模塊(即python mymodule.py
時的大小寫。 在第二種情況下, __name__
的值為'__main__'
如果您希望可以運行main(),只需編寫:
def main():
do_stuff()
more_stuff()
if __name__ == '__main__':
main()
如果您導入的東西不是主要的。 開始閑置時,需要從菜單運行它或將其作為參數運行。
我想if __name__ == '__main__'
',那么您稱呼的是“ main if __name__ == '__main__'
。 所以可以這樣稱呼:
>> import mymodule
>> mymodule.doStuff()
否則,如果您的模塊中實際上有一個主要功能,
>> import mymodule
>> mymodule.main()
我找到了另一種在Python 2.6中按名稱運行模塊的方法:
>>> import runpy
>>> runpy.run_module('mypack.mymodule')
run_module返回具有所有已創建屬性的字典
http://docs.python.org/library/runpy.html?highlight=runpy#runpy.run_module
關於taleinat提到的execfile。
建議使用不建議使用Python 3.5的execfile,而建議使用以下方法。
刪除了execfile()。 代替execfile(fn)使用exec(open(fn).read())。
PS:我無法評論taleinat的解決方案,因為stackoverflow中缺少信譽點。
您需要做的就是像joaquin所說的那樣調用main函數本身。 我只是在文件的位置保持終端打開並在需要時重新運行命令。 最后一種方法是使用geany或Idle之類的IDE,並通過(file> open)將其打開,然后按F5。
該:
if __name__ == '__main__':
doStuff()
實際上,如果導入了主函數,則可以防止主函數運行。
編輯:由於execfile
在Python 3中已刪除,因此更新了這個舊答案。
使用execfile (即execfile(file_path)
)代替導入。
按照CarlesBarrobés的答案中的建議使用runpy模塊。
更新:
條件if __name__ == '__main__'
的目的是在導入模塊時不執行“ if”塊內的代碼。 僅當直接運行文件時(例如,通過從命令行運行“ python filename ”或使用execfile(_filename_)
,才會運行此類代碼。
根據要求,提供了一個使用execfile的示例。 在C:\\my_code.py
:
if __name__ == '__main__':
print "Hello World!"
然后,在解釋器中:
>>> execfile("C:\\my_code.py")
Hello world!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.