谈起Python代码中的双下划线,常常会想起魔法方法,但实际上双下划线不仅仅是用于魔法方法,在阅读代码的过程中,经常看到一些让人感到奇怪的双下划线,为此特地在这里帮大家汇总总结常用的属性和方法。
1. __ name__
这是最常用的属性,代表模块的名称,常用于启动的入口文件,也是调试时在文件下方写调试语句的主要编写方式。
if __ name__ == '__ main__' :
当这个模块以主模块启动时,这个值就是’__ main__’,否则是模块名。
如test2引用test中的函数xxx(),此时在test2中调用xxx方法,打印出来的是test的模块名称。
2. __ import__
动态导入
动态导入使用的是字符串导入,常用于有选择性的导入差不多功能的模块,如下所示是导入时间模块,t1实际代表的就是datetime,在有多级的导入时,如果无fromlist,则导入的就是第一级,而加入此参数则是导入后一个
如下所示是带参数的,t1代表的是os.path
下图是不带参数的,代表os,错误的提示中就指出了是os没有exists。
3. __ all__
主要用于通过from 模块名 import * 方式导入模块时限制导入的内容
Python在通过from模块导入时默认不会导入以下划线”_”开头的东西。如下图所示
在test模块定义了xxx和_xxx两个方法,而在test2中使用时软件会标红线,提示找不到。
而import test之后,使用test._xxx(),不会受限制。
此时没有用__all__,test2可以使用另外一个变量xyz。
当使用__all__限定能够被导入的只有xxx时,xyz也会标红。
有意思的是__all__标识上_xxx后,原先变红的也会变得可以导入
- __ package__
打印包的名称,__ name__是模块的名称,在主模块会有差别,主模块是__name__的值是__main__,但__package__会显示当前的包名,当前的包没有名称时会是None。
以上就是我平时收集的几个双下滑线的属性的使用方式,如果有更多的知识,欢迎评论分享!