对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中的闭包实例详解
Aug 29 Python
决策树的python实现方法
Nov 18 Python
Python实现求最大公约数及判断素数的方法
May 26 Python
利用Python批量生成任意尺寸的图片
Aug 29 Python
matplotlib.pyplot画图 图片的二进制流的获取方法
May 24 Python
Python DataFrame设置/更改列表字段/元素类型的方法
Jun 09 Python
Python中的Django基本命令实例详解
Jul 15 Python
python实现栅栏加解密 支持密钥加密
Mar 20 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 Python
用python实现前向分词最大匹配算法的示例代码
Aug 06 Python
Python调用系统命令os.system()和os.popen()的实现
Dec 31 Python
Python制作春联的示例代码
Jan 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
异世界新番又来了,同样是从零开始,男主的年龄降到5岁
2020/04/09 日漫
php官方微信接口大全(微信支付、微信红包、微信摇一摇、微信小店)
2015/12/21 PHP
PHP与jquery实时显示网站在线人数实例详解
2016/12/02 PHP
PHP中关于php.ini参数优化详解
2020/02/28 PHP
JavaScript 类的定义和引用 JavaScript高级培训 自定义对象
2010/04/27 Javascript
javascript 保存文件到本地实现方法
2012/11/29 Javascript
在JS中如何调用JSP中的变量
2014/01/22 Javascript
详解javascript数组去重问题
2015/11/06 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
Node.js实现数据推送
2016/04/14 Javascript
js实现无缝滚动图
2017/02/22 Javascript
Node.js  事件循环详解及实例
2017/08/06 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
利用vue和element-ui设置表格内容分页的实例
2018/03/02 Javascript
JS document内容及样式操作完整示例
2020/01/14 Javascript
JS一次前端面试经历记录
2020/03/19 Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
2020/05/23 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
从零开始在vue-cli4配置自适应vw布局的实现
2020/06/08 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
2020/11/07 Javascript
[03:03]2014DOTA2国际邀请赛 EG战队专访
2014/07/12 DOTA
Python使用multiprocessing创建进程的方法
2015/06/04 Python
python中的编码知识整理汇总
2016/01/26 Python
python与C互相调用的方法详解
2017/07/14 Python
利用python打开摄像头及颜色检测方法
2018/08/03 Python
Python 多线程C段扫描、检测 Ping扫描脚本的实现
2020/09/03 Python
Python使用paramiko连接远程服务器执行Shell命令的实现
2021/03/04 Python
纯css3实现宠物小鸡实例代码
2018/10/08 HTML / CSS
给朋友的道歉信
2014/01/09 职场文书
小学学校门卫岗位职责
2014/08/03 职场文书
见习报告怎么写
2014/10/31 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
地陪导游欢迎词
2015/01/26 职场文书
机关保密工作承诺书
2015/05/04 职场文书
《丑小鸭》教学反思
2016/02/19 职场文书
导游词之日月潭
2019/11/05 职场文书