请问if __name__=="__main__":的用处

请问if __name__=="__main__":的用处

模块的结尾为何要有

if   __name__  ==  "__main__":
      
       main()


这问题弱了点, 不好意思。

可是我编程从不用这样的句子,而看到别人都在用。
可以作为独立的程序来运行

也就是调试这个程序
在你写的这段程序中如果以主程序运行的话 __name__ 参数就等于 __main__

有的时候写的类。模块,库,都有这段代码,如果单独运行的话,可以进行个简单的测试。如果是其他程序IMPORT的话,就不会运行
if   __name__  ==  "__main__":
      
       main()

中间的代码。
谢谢,楼主的问题我也不明白!
谢谢。
不过不写 “if __name__=="__main()": ”

也能单独调试啊
“谢谢,楼主的问题我也不明白!”

我不过是想问下 if __name__=="__main": 在何种情况下必须用?

上面rikioy君讲的还是很详细的。

我基本上理解了。

可是在python的interpreter里运行我写的模块,不是要敲import mymodulename 吗?
这时,我的这个模块中有没有 if  __name=="__main__", 都会执行;
而如果我的另一个module的代码中import 了这个模块,
有 if  __name=="__main__"的部分就不执行;
  我理解的对吗?
if __name__=="__main()":
允许这个程序在独立运行的时候做些有用的事情,不会在别的程序将它做为模块使用而引起冲突


QUOTE:
原帖由 niexining 于 2006-7-27 13:16 发表
可是在python的interpreter里运行我写的模块,不是要敲import mymodulename 吗?
这时,我的这个模块中有没有 if  __name=="__main__", 都会执行;
而如果我的另一个module的代码中import 了这个模块,
有 if  __name=="__main__"的部分就不执行;
  我理解的对吗?

import时执行的是“顶层”代码,比如

[Copy to clipboard] [ - ]
CODE:
A = 1
def func():
  B = 1

if __name__ == "__main__":
  func()

没有缩进的都是“顶层”代码