在 Python 函数中,如果一个函数调用了其他函数完成一项功能,我们称这个函数为主函数,如果一个函数没有调用其他函数,我们称这种函数为非主函数。主模块和非主模块的定义也类似,如果一个模块被直接使用,而没有被别人调用,我们称这个模块为主模块,如果一个模块被别人调用,我们称这个模块为非主模块。
在 Python 中,有主模块和非主模块之分,当然,我们也得区分他们啊。那么怎么区分主模块和非主模块呢?
这就需要用到 __name__
属性了,这个 ——name——
属性值是一个变量,且这个变量是系统给出的。利用这个变量可以判断一个模块是否是主模块。如果一个属性的值是 __main__
,那么就说明这个模块是主模块,反之亦然。但是要注意了:** 这个 __main__
属性只是帮助我们判断是否是主模块,并不是说这个属性决定他们是否是主模块,决定是否是主模块的条件只是这个模块有没有被人调用**
具体看示例:
首先创建了模块 lname ,然后判断一下是否是主模块,如果是主模块就输出 main
不是,就输出 not main
,首先直接运行该模块,由于该模块是直接使用,而没有被人调用,所以是主模块,因此输出了 main
,具体看下图:
然后又创建一个 user_lname 模块,里面只是简单的导入了 lname 模块,然后执行,输出的结果是 not main
,因为 lname 模块被该模块调用了,所以不是主模块,输出结果如图: