Python 引入模块时,将会执行整个模块。 __name__
是一个系统内建的变量,当我们在 module1
里面执行的时候,此时这个模块的__name__
的值即为 __main__
:
# module1
'''
some code above, but will be ignored
'''
# process here
if __name__ == '__main__':
print('I am main')
当 module1
作为一个模块被调用,例如在 module2
中,此时 __name__
的值即为模块名:
# module2
import module1
print(__name__) # '__main__'
print(module1.__name__) # '__module1__'
这时由于 Python 在引入模块的时候,将会执行整个模块,这时,在原来的模块 module1
中再次执行判断语句时,这时 __name__
的值为 module1
,不等于 __main__
,这时不会执行后续语句。因此,我们可以通过 Python 这个机制在一个模块中来判断,当这个模块被执行的时候,是否是被导入其他模块中执行的,还可以进行模块的 debug
,提高代码的健壮性。