对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中的二叉树查找算法模块使用指南
Jul 04 Python
Python标准库与第三方库详解
Jul 22 Python
python脚本实现数据导出excel格式的简单方法(推荐)
Dec 30 Python
Pycharm编辑器技巧之自动导入模块详解
Jul 18 Python
python实现搜索文本文件内容脚本
Jun 22 Python
python爱心表白 每天都是浪漫七夕!
Aug 18 Python
使用python判断你是青少年还是老年人
Nov 29 Python
python实现公司年会抽奖程序
Jan 22 Python
Python静态类型检查新工具之pyright 使用指南
Apr 26 Python
pycharm设置鼠标悬停查看方法设置
Jul 29 Python
程序员的七夕用30行代码让Python化身表白神器
Aug 07 Python
python析构函数用法及注意事项
Jun 22 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 和 XML: 使用expat函数(二)
2006/10/09 PHP
php中生成随机密码的自定义函数代码
2013/10/21 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
php类中的各种拦截器用法分析
2014/11/03 PHP
PHP添加图片水印、压缩、剪切的封装类
2015/08/17 PHP
json简单介绍
2008/06/10 Javascript
用js生产批量批处理执行命令
2008/07/28 Javascript
JavaScript 事件属性绑定带参数的函数
2009/03/13 Javascript
精通JavaScript 纠正 cleanWhitespace函数
2010/03/11 Javascript
通过Jquery遍历Json的两种数据结构的实现代码
2011/01/19 Javascript
可自己添加html的伪弹出框实现代码
2013/09/08 Javascript
JS中window.open全屏命令解析及使用示例
2013/12/11 Javascript
基于javascript、ajax、memcache和PHP实现的简易在线聊天室
2015/02/03 Javascript
jquery实现简单的轮换出现效果实例
2015/07/23 Javascript
js右下角弹出提示框示例代码
2016/01/12 Javascript
轻松实现js图片预览功能
2016/01/18 Javascript
基于JavaScript实现高德地图和百度地图提取行政区边界经纬度坐标
2016/01/22 Javascript
jQuery实现表格与ckeckbox的全选与单选功能
2016/11/24 Javascript
JavaScript实现的鼠标响应颜色渐变效果完整实例
2017/02/18 Javascript
Bootstrap Scrollspy源码学习
2017/03/02 Javascript
JavaScript实现一个空中避难的小游戏
2017/06/06 Javascript
JS实现身份证输入框的输入效果
2017/08/21 Javascript
js实现文件上传功能 后台使用MultipartFile
2018/09/08 Javascript
mpvue实现小程序签到金币掉落动画(api实现)
2019/10/17 Javascript
[01:10]DOTA2亚洲邀请赛 征战号角响彻全场
2015/01/06 DOTA
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
介绍Python中的__future__模块
2015/04/27 Python
Python使用arrow库优雅地处理时间数据详解
2017/10/10 Python
django输出html内容的实例
2018/05/27 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
饭店工作计划书
2014/01/10 职场文书
党的群众路线教育实践活动学习心得体会
2014/03/03 职场文书
导航工程专业自荐信
2014/09/02 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
JPA 通过Specification如何实现复杂查询
2021/11/23 Java/Android
VUE递归树形实现多级列表
2022/07/15 Vue.js