对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中使用ConfigParser解析ini配置文件实例
Aug 30 Python
Python解析nginx日志文件
May 11 Python
python数组过滤实现方法
Jul 27 Python
python实现简单http服务器功能
Sep 17 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
Django集成搜索引擎Elasticserach的方法示例
Jun 04 Python
Django 数据库同步操作技巧详解
Jul 19 Python
tornado+celery的简单使用详解
Dec 21 Python
python爬虫库scrapy简单使用实例详解
Feb 10 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
使用jupyter notebook直接打开.md格式的文件
Apr 10 Python
Python应用自动化部署工具Fabric原理及使用解析
Nov 30 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
php后台程序与Javascript的两种交互方式
2009/10/25 PHP
PHP 伪静态隐藏传递参数名的四种方法
2010/02/22 PHP
PHP序列号生成函数和字符串替换函数代码
2012/06/07 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
Javascript表达式中连续的 && 和 || 之赋值区别
2010/10/17 Javascript
调试Node.JS的辅助工具(NodeWatcher)
2012/01/04 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
基于Javascript实现返回顶部按钮
2016/02/29 Javascript
requireJS使用指南
2016/04/27 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
JavaScript中style.left与offsetLeft的使用及区别详解
2016/06/08 Javascript
js友好的时间返回函数
2016/08/24 Javascript
微信小程序 Tab页切换更新数据
2017/01/05 Javascript
bootstrap实现的自适应页面简单应用示例
2017/03/09 Javascript
一个小时快速搭建微信小程序的方法步骤
2019/04/15 Javascript
Layui数据表格 前后端json数据接收的方法
2019/09/19 Javascript
浅谈TypeScript的类型保护机制
2020/02/23 Javascript
在实例中重学JavaScript事件循环
2020/12/03 Javascript
Python面向对象编程中关于类和方法的学习笔记
2016/06/30 Python
python 实现上传图片并预览的3种方法(推荐)
2017/07/14 Python
基于python 字符编码的理解
2017/09/02 Python
Python数据拟合与广义线性回归算法学习
2017/12/22 Python
Python中pillow知识点学习
2018/04/30 Python
python 文件转成16进制数组的实例
2018/07/09 Python
python判断文件夹内是否存在指定后缀文件的实例
2019/06/10 Python
使用python画社交网络图实例代码
2019/07/10 Python
pytorch之Resize()函数具体使用详解
2020/02/27 Python
基于html5 canvas实现漫天飞雪效果实例
2014/09/10 HTML / CSS
实例教程 利用html5和css3打造一款创意404页面
2014/10/20 HTML / CSS
前端H5 Video常见使用场景简介
2020/08/21 HTML / CSS
static全局变量与普通的全局变量有什么区别
2014/05/27 面试题
入党积极分子学习两会心得体会范文
2014/03/17 职场文书
销售竞赛活动方案
2014/08/23 职场文书
2015年银行客户经理工作总结
2015/04/01 职场文书
解析Java中的static关键字
2021/06/14 Java/Android