【问题标题】:Python IDLE: Run main?Python IDLE:运行主程序?
【发布时间】:2011-02-25 12:35:04
【问题描述】:

我处于空闲状态:

>>> import mymodule
>>> # ???

导入模块后:

if __name__ == '__main__':
    doStuff()

我实际上如何从 IDLE 调用 main

【问题讨论】:

    标签: python python-idle runpy


    【解决方案1】:

    __name__ == '__main__' 上的 if 条件是为了让代码在您的模块直接执行时运行,而在导入时不运行。确实没有“主要”这样的概念,例如在爪哇。在解释 Python 时,在导入/运行模块时会读取并执行所有代码行。

    Python 提供了__name__ 机制,用于区分导入情况和将模块作为脚本运行时的情况,即python mymodule.py。在第二种情况下,__name__ 将具有值 '__main__'

    如果您想要一个可以运行的 main(),只需编写:

    def main():
       do_stuff()
       more_stuff()
    
    if __name__ == '__main__':
       main()
    

    【讨论】:

      【解决方案2】:

      如果你导入一些东西,它不是主要的。您需要从菜单中运行它,或者在您开始空闲时作为参数运行它。

      【讨论】:

        【解决方案3】:

        我想你是在调用 if __name__ == '__main__' 之后的'main'。这么称呼它:

        >> import mymodule
        >> mymodule.doStuff()
        

        否则,如果您的模块中确实有一个 main 函数,那么,

        >> import mymodule
        >> mymodule.main()
        

        【讨论】:

          【解决方案4】:

          我在 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】:

            关于taleinat提到的execfile。

            建议使用 Python 3.5 已弃用的 execfile 代替以下方法。

            删除了 execfile()。代替 execfile(fn) 使用 exec(open(fn).read())。

            PS:由于 stackoverflow 中缺少信誉点,我无法评论 taleinat 的解决方案。

            【讨论】:

              【解决方案6】:

              编辑:更新了这个旧答案,因为execfile 在 Python 3 中已被删除。

              使用 Python 2

              使用execfile(即execfile(file_path))而不是使用导入。

              使用 Python 3

              按照Carles Barrobés's answer 中的建议使用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!
              

              【讨论】:

              • 我在完成这项工作时遇到了困难 - 你能发布一个代码示例吗?
              【解决方案7】:

              您所要做的就是像 joaquin 所说的那样调用 main 函数本身。 我的做法是在文件所在位置保持一个终端打开,并在需要时重新运行该命令。 最后一种方法是使用 geany 或 Idle 之类的 IDE,并使用 (file>open) 打开它,然后按 F5。
              该:

              if __name__ == '__main__':
              doStuff()
              

              你实际上是为了让 main 函数在被导入时不运行。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2021-11-21
                • 2021-02-26
                • 1970-01-01
                • 1970-01-01
                • 2022-11-18
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多