Python 中的模块(.py 文件)在创建时会自动加载一些内置变量,__name__ 就是其中之一。许多变量和函数通常在 Python 模块中定义。这些变量和函数相当于模块中的一个函数。模块导入到其他文件中,可以调用这些变量和函数。那么此时__name__的作用就暴露了。它可以识别模块的名称,并且可以显示模块的某个功能是由它自己执行还是由其他文件执行。假设模块A和B,模块A自己定义函数C,模块B调用模块A,现在函数C被执行:
如果C由A自己执行,也就是说模块执行自己定义的函数,那么__name__=='__main__'
如果C被B调用执行,也就是说当前模块调用并执行了其他模块的功能,那么__name__=='A'(被调用模块的名称)
其实换一种说法就是指出当前程序运行在哪个模块。
下面举例说明:
首先自定义模块Student,在模块中定义功能Differ()
然后先自身执行,结果如下, __name__=='__main__'
然后B调用执行,结果 __name__=='Student'
上面的结果是两次,因为python中的import模块会先执行文件,如下图:
可能有人注意到了,上面的__main__可以作为python中函数的入口点,而实际项目中经常使用if __name__=='__main__'来表示整个项目开始运行的入口点。另外,如果你不希望函数的某些部分被其他模块调用和执行,比如我的自定义模块Student中的'my password is xxx',你只能自己执行才能打印密码。你所能做的就是把这部分写在 if 语句中,它只会在 __name__=='__main__' 时执行。可以这样理解。 if语句外面的代码是最外层,意思是“全局变量”,放在if里面就变成private了。
本文为原创文章,版权归知行编程网所有,欢迎分享本文,转载请保留出处!
你可能也喜欢
- ♥ python判断文件内容是否为空08/19
- ♥ 如何在python中将变量写入文件09/21
- ♥ python的web开发框架有哪些09/25
- ♥ python如何检测字符串是否全是字母?10/10
- ♥ 如何在python中编写矩阵转置11/15
- ♥ python列表索引的两种用途08/27
内容反馈