我在闲聊:
>>> import mymodule
>>> # ???
导入模块后:
if __name__ == '__main__':
doStuff()
如何从IDLE实际呼叫main
?
答案 0 :(得分:12)
__name__ == '__main__'
上的if条件是指在您的模块直接执行时运行的代码,而不是在导入时运行的代码。实际上没有像“主要”那样的概念。在Java中。解释Python时,在导入/运行模块时会读取并执行所有代码行。
Python为您提供__name__
机制,以区分导入案例与将模块作为脚本运行的情况,即python mymodule.py
。在第二种情况下,__name__
将具有值'__main__'
如果你想要一个可以运行的main(),只需写下:
def main():
do_stuff()
more_stuff()
if __name__ == '__main__':
main()
答案 1 :(得分:3)
如果你输入的东西不是主要的。您需要从菜单中运行它,或者在空闲时作为参数运行。
答案 2 :(得分:1)
我想你在if __name__ == '__main__'
之后称你所拥有的是“主要的”。所以称之为:
>> import mymodule
>> mymodule.doStuff()
否则,如果您的模块中确实有一个主函数,那么
>> import mymodule
>> mymodule.main()
答案 3 :(得分:1)
使用execfile(文件名)而不是使用导入。
<强>更新强>
条件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!
答案 4 :(得分:1)
我发现了另一种在Python 2.6中按名称运行模块的方法:
>>> import runpy
>>> runpy.run_module('mypack.mymodule')
run_module返回包含所有已创建属性的字典
http://docs.python.org/library/runpy.html?highlight=runpy#runpy.run_module
答案 5 :(得分:1)
关于taleinat提到的exec文件。
Python 3.5弃用了execfile而是建议使用以下方法。
删除了execfile()。而不是execfile(fn)使用exec(open(fn).read())。
PS:由于stackoverflow中缺少声誉点,我无法对taleinat的解决方案发表评论。
答案 6 :(得分:0)
所有你需要做的就是像joaquin所说的那样调用main函数。
我是怎么做的只是在文件的位置打开一个终端并在需要时重新运行命令。
最后一种方法是使用像geany或Idle这样的IDE并用(文件&gt; open)打开它并按F5。
的:
if __name__ == '__main__':
doStuff()
实际上,如果导入了主函数,它实际上是为了防止它运行。