代码1:
结果:
分析:
当直接运行test1.py时,内置的__name__属性会被赋值为__main__,因此会执行if语句的内容
代码2:
结果:
分析:import test_1也就是在test_2的模块中引入test_1模块,当我们直接运行test_2模块而不是test_1模块时,test_1模块中的内置属性__name__的值就不再是__main__(因为它现在是被别人调用的,而不是自己运行的),此时test_1模块的__name__的值为它这个模块的名字,也就是test_1,因此也没有执行test_1模块的if语句,而因为test_2模块是被直接执行的,因此它会执行if语句的内容。
作用:有了这个区别,我们就可以使用 if name == ‘main’ 内部写测试代码,自己运行自己这个才可以检测的内容,但是当别人调用时,这些测试代码不会被执行。用来区分是自己执行还是别人调用。
参考文章:
https://blog.csdn.net/HEERY551/article/details/94736960