Python代码和看Python代码时,我们常常可以看到这样的代码:
def main():
...
if __name__ == '__main__':
mian()
name,
如果是放在Modules模块中,就表示是模块的名字;
如果是放在Classs类中,就表示类的名字;
main的含义
python代码,是可以直接一行行写出来,然后去运行,更多的Python代码,是写成更加通用的,可以被调用的,可以重复利用的,模块的形式;所以都是写在对应的函数里面的。
**模块第一次被导出(import)后,系统会自动为其创建一个域名空间(namespace);
(模块,都是有自己的名字的)此处的脚本的主模块的名字,始终都叫做main。**
详细解释if name == ‘main‘:
mymath.py
运行结果:
将自己写的有条理可复用的函数,放在一个专门的文件中,被别人调用
模板文件 mymath.py
然后别的python文件__name___and___main__.py
中,导入此mymath模块,然后使用其square函数:
结果
可以看到出现了用于在mymath.py中的打印结果
test: square(42) == 1764
明显的,我作为模块调用者是不想看到的
我们希望:
模块mymath.py本身,希望有自己的相关的调试的代码
但是又不希望在被别的,本模块的调用者,所执行到,所看到
所以修改mymath.py
mymath.py本身,自己运行,调试,验证自己的函数square执行的是否正确:
__name___and___main__.py
,在import mymath的时候,也不会看到对应的代码执行的结果了:
其中的__main__
,就是:
脚本自己去运行的话,对应的模块名,始终叫做__main__
,mymath.py中的name就是所在模块的名字
如果被当做一个模块被别人调用的时候,对应的模块mymath.py的模块名,就是mymath,
不是__main__
了,
只有在直接引用的时候,在自己的模板中 mymath.py = __main__
作为模板,被程序导入时,模板名就是本身的文件名