簡體   English   中英

Python IDLE:運行main?

[英]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中已刪除,因此更新了這個舊答案。

使用Python 2

使用execfile (即execfile(file_path) )代替導入。

使用Python 3

按照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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM