对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多线程threading.Lock锁用法实例
Nov 01 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
May 24 Python
python实现RabbitMQ的消息队列的示例代码
Nov 08 Python
详解pandas的外部数据导入与常用方法
May 01 Python
Python笔试面试题小结
Sep 07 Python
python调用matplotlib模块绘制柱状图
Oct 18 Python
Python帮你识破双11的套路
Nov 11 Python
python输出数组中指定元素的所有索引示例
Dec 06 Python
Python简单实现区域生长方式
Jan 16 Python
详解Python中的路径问题
Sep 02 Python
python与idea的集成的实现
Nov 20 Python
浅析Python的命名空间与作用域
Nov 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
SONY ICF-SW07收音机电路分析
2021/03/02 无线电
web方式ftp
2006/10/09 PHP
PHP系统流量分析的程序
2006/10/09 PHP
使用Xdebug调试和优化PHP程序之[1]
2007/04/17 PHP
php 将excel导入mysql
2009/11/09 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
详谈phpAdmin修改密码后拒绝访问的问题
2017/04/03 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
JS简单的轮播的图片滚动实例
2013/06/17 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
node.js中的fs.fchmod方法使用说明
2014/12/16 Javascript
Angular之指令Directive用法详解
2017/03/01 Javascript
不得不看之JavaScript构造函数及new运算符
2017/08/21 Javascript
微信小程序上传图片功能(附后端代码)
2020/06/19 Javascript
vue通信方式EventBus的实现代码详解
2019/06/10 Javascript
JavaScript或jQuery 获取option value值方法解析
2020/05/12 jQuery
[02:37]2018DOTA2亚洲邀请赛赛前采访 VP.no[o]ne心中最强SOLO是谁
2018/04/04 DOTA
python使用pil生成图片验证码的方法
2015/05/08 Python
浅谈django rest jwt vue 跨域问题
2018/10/26 Python
Python根据欧拉角求旋转矩阵的实例
2019/01/28 Python
python实现抽奖小程序
2020/04/15 Python
pyqt5、qtdesigner安装和环境设置教程
2019/09/25 Python
python实现的Iou与Giou代码
2020/01/18 Python
Window10上Tensorflow的安装(CPU和GPU版本)
2020/12/15 Python
HTML最新标准HTML5总结(必看)
2016/06/13 HTML / CSS
英国网上花店:Bunches
2016/11/29 全球购物
中国海淘族值得信赖的海淘返利网站:55海淘
2017/01/16 全球购物
sort命令的作用和用法
2012/11/04 面试题
企业管理部经理岗位职责
2013/12/24 职场文书
高校教师自荐信范文
2014/03/13 职场文书
公务员检讨书
2014/11/01 职场文书
2014年人事部工作总结
2014/12/03 职场文书
2015年消防工作总结
2015/04/24 职场文书
如何理解python接口自动化之logging日志模块
2021/06/15 Python
详解Redis在SpringBoot工程中的综合应用
2021/10/16 Redis
Pandas-DataFrame知识点汇总
2022/03/16 Python