__name__:
如果是放在Modules模块中,就表示是模块的名字;
如果是放在Classs类中,就表示类的名字;
__main__:
模块第一次被导出(import)后,系统会自动为其创建一个域名空间(namespace);
(模块,都是有自己的名字的)此处的脚本的主模块的名字,始终都叫做__main__。
我们所希望的是:
作为模块mymath.py本身,希望有自己的相关的调试的代码,用于调试自己模块函数,演示如何使用等等代码;
但是又不希望在被别的,本模块的调用者,所执行到,所看到;
此时,就可以用以下代码,把调测代码放在语句 “if __name__== "__main__": ”之后,就可以避免调测代码被调用者执行
if __name__ == "__main__":
print "test: square(42) ==",square(42);
其中的__main__,就是:
作为模块mymath.py本身:
1、脚本自己去运行的话,对应的模块名,就是上面所解释的,始终叫做 __main__
2、被调用去运行的话,对应的模块名就是模块名字本身:mymath
关于这点,上述代码已经验证过了。因为mymath.py中的__name__,就是对应的,内置的变量,通过判断,的确是__main__,然后才会去执行到对应的模块的测试代码的。
如果被当做一个模块被别人调用的时候,对应的模块mymath.py的模块名,就是mymath;
详见: