python是脚本语言,其特性不像c/c++/java语言一样需要有一个入口编译器才能一步一步执行,他是动态语言,他的执行是从脚本的第一行开始,没有统一的入口。
所以为了让程序只执行我们想让他执行的代码,就有了:if __name=='__main__'
意思就是告诉编译器,你可以从这个模块开始执行。
看一段代码:
file1.py:
def func():
print('thats 1')
if __name__=='__main__':
print('1 start')
else:
print('1 name!=main')
file2.py2:
import file1
print('thats 2')
file1.func()
if __name__=='__main__':
print('2 start')
else:
print('2 name!=main')
执行file2的结果:
1 name!=main
thats 2
thats 1
2 start
执行步骤:
1. import file1
//这个时候转到file1文件执行
1. print(‘1 name!=main’)
//因为file1文件是被导入的模块,不是main,所以执行这一句
1. print(‘thats 2’)
1. print(‘thats 1’)
1. print(‘2 start’)