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


Posted in Python onJanuary 11, 2019

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的Zato发送AMQP消息的教程
Apr 16 Python
在Python中marshal对象序列化的相关知识
Jul 01 Python
全面解析Python的While循环语句的使用方法
Oct 13 Python
python中requests库session对象的妙用详解
Oct 30 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
Python中list查询及所需时间计算操作示例
Jun 21 Python
python判断文件是否存在,不存在就创建一个的实例
Feb 18 Python
python logging设置level失败的解决方法
Feb 19 Python
Python 如何在字符串中插入变量
Aug 01 Python
Python读写csv文件流程及异常解决
Oct 20 Python
python help函数实例用法
Dec 06 Python
Python try except finally资源回收的实现
Jan 25 Python
Python实现批量执行同目录下的py文件方法
Jan 11 #Python
python多个模块py文件的数据共享实例
Jan 11 #Python
Python设计模式之享元模式原理与用法实例分析
Jan 11 #Python
详解从Django Rest Framework响应中删除空字段
Jan 11 #Python
python对列进行平移变换的方法(shift)
Jan 10 #Python
对python模块中多个类的用法详解
Jan 10 #Python
python 图像平移和旋转的实例
Jan 10 #Python
You might like
PHP 利用AJAX获取网页并输出的实现代码(Zjmainstay)
2012/08/31 PHP
PHP array_multisort() 函数的深入解析
2013/06/20 PHP
PHP那些琐碎的知识点(整理)
2017/05/20 PHP
阿里云Win2016安装Apache和PHP环境图文教程
2018/03/11 PHP
PHP中Session ID的实现原理实例分析
2019/08/17 PHP
写给想学习Javascript的朋友一点学习经验小结
2010/11/23 Javascript
NodeJs中的非阻塞方法介绍
2012/06/05 NodeJs
jtable列中自定义button示例代码
2013/11/21 Javascript
原生JS操作网页给p元素添加onclick事件及表格隔行变色
2013/12/01 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
JS获取IE版本号与HTML设置IE文档模式的方法
2016/10/09 Javascript
AngularJS学习第一篇 AngularJS基础知识
2017/02/13 Javascript
Vue.js常用指令的使用小结
2017/06/23 Javascript
妙用Angularjs实现表格按指定列排序
2017/06/23 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
微信小程序使用component自定义toast弹窗效果
2018/11/27 Javascript
React降级配置及Ant Design配置详解
2018/12/27 Javascript
深入了解JavaScript 的 WebAssembly
2019/06/15 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
5分钟教你用nodeJS手写一个mock数据服务器的方法
2019/09/10 NodeJs
vue中的双向数据绑定原理与常见操作技巧详解
2020/03/16 Javascript
OpenLayers加载缩放控件使用方法详解
2020/09/25 Javascript
python+opencv实现摄像头调用的方法
2019/06/22 Python
用Python徒手撸一个股票回测框架搭建【推荐】
2019/08/05 Python
利用rest framework搭建Django API过程解析
2019/08/31 Python
Python类的继承super相关原理解析
2020/10/22 Python
浅谈html5 响应式布局
2014/12/24 HTML / CSS
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
POP文化和音乐灵感的时尚:Hot Topic
2019/06/19 全球购物
2014元旦晚会策划方案
2014/02/19 职场文书
幼儿园家长安全责任书
2014/07/22 职场文书
工作证明范本(2篇)
2014/09/14 职场文书
辣妈辣妹观后感
2015/06/10 职场文书
python小程序之飘落的银杏
2021/04/17 Python
JavaScript实现音乐播放器
2022/08/14 Javascript