在Python代码中,我们常常看到主函数是以if __name__ == '__main__'开头的,比如
它的原理是什么呢?
首先要知道,__name__是内置变量,用于表示当前模块的名字。在一个模块中运行以下语句,你会发现输出的是__main__。
但是当我们在另一个模块中import刚才的模块时,输出此模块的__name__,发现结果变成了它的模块名。
之所以输出了两遍模块名,是因为test2在输出test模块的内置函数时,同时也执行了test里的代码。
由此我们可以看出来,__name__是善变的:当模块被直接执行时,__name__=='__main__'结果为真,所以后续的代码可以继续执行;而当模块被调用执行时,结果为假,后续的代码无法继续执行。正是利用了__name__的这一特性,以if __name__ == '__main__'开头的代码块就可以作为主函数了。