对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 相关文章推荐
Java中重定向输出流实现用文件记录程序日志
Jun 12 Python
Python的SQLalchemy模块连接与操作MySQL的基础示例
Jul 11 Python
python字符串str和字节数组相互转化方法
Mar 18 Python
Python中模块pymysql查询结果后如何获取字段列表
Jun 05 Python
Python初学时购物车程序练习实例(推荐)
Aug 08 Python
Django ORM框架的定时任务如何使用详解
Oct 19 Python
Django处理文件上传File Uploads的实例
May 28 Python
便捷提取python导入包的属性方法
Oct 15 Python
Django中使用MySQL5.5的教程
Dec 18 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
用python绘制樱花树
Oct 09 Python
用python画城市轮播地图
May 28 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 socket的讲解与实例分析
2013/06/13 PHP
详解WordPress中分类函数wp_list_categories的使用
2016/01/04 PHP
php等比例缩放图片及剪切图片代码分享
2016/02/13 PHP
JavaScipt基本教程之前言
2008/01/16 Javascript
清空上传控件input file的值
2010/07/03 Javascript
浅析Prototype的模板类 Template
2011/12/07 Javascript
js实现带搜索功能的下拉框实时搜索实时匹配
2013/11/05 Javascript
jquery 实现两级导航菜单附效果图
2014/03/07 Javascript
jquery实现选中单选按钮下拉伸缩效果
2015/08/06 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
js简单实现网页换肤功能
2017/04/07 Javascript
微信小程序中做用户登录与登录态维护的实现详解
2017/05/17 Javascript
微信小程序 循环及嵌套循环的使用总结
2017/09/26 Javascript
React Native 真机断点调试+跨域资源加载出错问题的解决方法
2018/01/18 Javascript
jQuery实现常见的隐藏与展示列表效果示例
2018/06/04 jQuery
JS html事件冒泡和事件捕获操作示例
2019/05/01 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
2019/06/12 Javascript
Python使用django获取用户IP地址的方法
2015/05/11 Python
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
python脚本作为Windows服务启动代码详解
2018/02/11 Python
Python 加密与解密小结
2018/12/06 Python
Django logging配置及使用详解
2019/07/23 Python
学习Django知识点分享
2019/09/11 Python
python 函数的缺省参数使用注意事项分析
2019/09/17 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
Web前端绘制0.5像素的几种方法
2017/08/11 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
美国诺德斯特龙百货官网:Nordstrom
2016/08/23 全球购物
日本最大的眼镜购物网站:Oh My Glasses
2016/11/13 全球购物
加拿大时尚床上用品零售商:QE Home | Quilts Etc
2018/01/22 全球购物
伦敦一家领先的精品零售商:IRIS Fashion
2019/05/24 全球购物
社区党员先进事迹
2014/01/22 职场文书
材料加工工程求职信
2014/02/19 职场文书
畜牧兽医本科生的自我评价
2014/03/03 职场文书
银行保安拾金不昧表扬稿
2015/05/05 职场文书