对Python模块导入时全局变量__all__的作用详解

yipeiwu_com6年前Python基础

Python中一个py文件就是一个模块,“__all__”变量是一个特殊的变量,可以在py文件中,也可以在包的__init__.py中出现。

1、在普通模块中使用时,表示一个模块中允许哪些属性可以被导入到别的模块中,

如:全局变量,函数,类。如下,test1.py和main.py

test1.py

__all__=["test"]
def test():
 print('----test-----')
 
def test1():
 print('----test1----')

main.py

from test1 import *
 
 
def main():
 test()
 
 #test1()
 
main()

两个文件在同一个目录下。

此时执行python main.py时结果如下:

Python模块导入时全局变量__all__作用

但是如果放开main.py的注释后,如下:

Python模块导入时全局变量__all__作用

那么在模块中的__all__变量就是为了限制或者指定能被导入到别的模块的函数,类,全局变量等,如果指定了那么只能是指定的那些可以被导入,没有指定默认就是全部可以导入,当然私有属性应该除外。

2、在包下的__init__.py中

sound/effects/__init__.py中添加__all__ = ["echo", "surround", "reverse"]

那么就会在from sound.effects import *时,包含上面三个模块。当__init__.py为空时,只是导入这个包,并非导入模块。

__init__.py中可以执行一些初始化内容,比如:

from . import test1 导入当前目录下的test1模块

from .. import test 导入上一层目录下的test模块

因为导入 包时会首先执行下__init__.py这个文件

以上这篇对Python模块导入时全局变量__all__的作用详解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持【听图阁-专注于Python设计】。

相关文章

Python 使用 prettytable 库打印表格美化输出功能

Python 使用 prettytable 库打印表格美化输出功能

pip install prettytable 每次添加一行 from prettytable import PrettyTable # 默认表头:Field 1、Field 2....

python带参数打包exe及调用方式

1.举个栗子:XX.py import sys arg1 = sys.argv[1] arg2 = sys.argv[2] print(arg1) print(arg2) 平时...

pycharm 使用心得(五)断点调试

pycharm 使用心得(五)断点调试

【运行】和【调试】前的设置,详见前面的文章,helloword。 1,设置断点 在代码前面,行号的后面,鼠标单击,就可以设置断点。如下: 2,调试 断点点击那个绿色的甲虫图标(似乎甲虫...

Pandas实现dataframe和np.array的相互转换

网上找了半天 不是dataframe转化成array的就是array转化dataframe,所以这里给汇总一下,相互转换的python代如下: dataframe转化成array d...

为什么入门大数据选择Python而不是Java?

为什么入门大数据选择Python而不是Java?

马云说:“未来最大的资源就是数据,不参与大数据十年后一定会后悔。”毕竟出自wuli马大大之口,今年二月份我开始了学习大数据的道路,直到现在对大数据的学习脉络和方法也渐渐清晰。今天我们就来...