【问题标题】:Why does it do this ? if - __name__ == '__main__' [duplicate]为什么这样做?如果 - __name__ == '__main__' [重复]
【发布时间】:2010-12-30 17:03:30
【问题描述】:

重复:
What does if __name__== "__main__" do?

考虑这段代码:

if __name__ == '__main__':
    import pdb
    pdb.run("interact()\n")

下面一行是什么意思?

if(__name__=='__main__')

我晕倒了。

【问题讨论】:

    标签: python


    【解决方案1】:

    __name__ 是一个在执行的 python 程序中自动设置的变量。如果你 import 来自另一个程序的模块,__name__ 将被设置为模块的名称。如果直接运行程序,__name__ 将设置为__main__

    因此,如果您希望某些事情发生当您从命令行运行程序而不是在导入时(例如,库的单元测试),您可以使用 /p>

    if __name__ == "__main__":
      # will run only if module directly run
      print "I am being run directly"
    else:
      # will run only if module imported
      print "I am being imported"
    

    诡计。这是一个常见的 Python 习语。

    【讨论】:

      【解决方案2】:

      如果此模块作为独立程序运行,这将是正确的。这样,某些东西既可以作为另一个程序导入的模块,也可以作为独立程序,但如果作为程序执行,则只能执行if语句中的代码。

      【讨论】:

        【解决方案3】:

        这是检查您是直接运行脚本还是包含在库中。

        当你像这样运行 python 脚本时:

        python myScript.py
        

        它发送一个参数,告诉你运行程序的第一个方法,这被广泛称为“main”,所以当__name____main__时,你就知道程序是从命令行执行的或双击的。

        【讨论】:

          【解决方案4】:

          他写了一个python模块,打算通过import使用。

          如果模块作为主要 python 脚本传递给解释器,则您引用的代码将运行。这将调用python调试器下的interact()方法。

          【讨论】:

            猜你喜欢
            • 2017-07-03
            • 2018-11-22
            相关资源
            最近更新 更多