python中的if __name__ == '__main__' what hell is it?
python认为一切模块都可能被执行或者被import
如果一个模块是被import导入的,那么该模块的调用者可能仅仅希望使用模块的部分代码,而不是直接运行它
如果模块是直接运行的,那么像c或者java语言一样,需要一个入口main
为了解决这个问题,python约定,当模块被执行的时候,__name__的值就是__main__,否则,值为模块的名字
而if __name__ == '__main__'在python模块中就类似于c或者java语言的main函数
PS:python致力于程序的可读性,__name__的约定并不易读,或许有一天python会把__name__仅仅作为模块名字,而按照约定俗成的那样,设置模块的main入口
UNIX编程艺术中有两条规则:1)符合大多数人习惯的设计是OK的;2)一个对象的含义是确定的,不要变来变去;
因此,python的这个设计 is not OK