在python程式码有时会看到if name == 'main': 的判断式,其用途是判断目前所执行的python档案是以主程式或以模组的方式执行。
先建立一名为mod1.py的档案
def module_name_show(): print('mod1.py 的__name__名称为:', __name__)if __name__ == '__main__': print('mod1.py 以主程式方式执行') module_name_show()else: print('mod1.py 以模组方式执行')
程式执行结果:
说明:
当直接执行程式时,列印出"mod1.py 以主程式方式执行",故得知其__name__的名称为__main__才会执行if条件成立的叙述。
然后再呼叫函式module_name_show()列印__name__名称。
接下来再建立一名为mod1_main.py的档案。
import mod1if __name__ == '__main__': print('mod1_main.py的__name__名称为:',__name__) mod1.module_name_show()
执行该mod1_main.py程式,结果如下:
由执行结果可得知:
import模组时,会先执行模组内的if判断叙述。而所列印的结果得知,是else区段,故可知其__name__名称不是__main__。
当import完后,才会执行主程式的if判断叙述。列印出所执行程式的__name__名称。列印出来为__main__。
接下来再呼叫mod1模组内的module_name_show()函式。而此时其函式所列印的__name__名称为mod1,也就是模组(档名)名称。
结论,由以上程式的示範可得知:
当直接执行该档案时,其__name__名称为: __main__。当该档案被另一个档案当模组import时,其__name__名称为该模组(档名)名称。