对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查询Mysql时返回字典结构的代码
Jun 18 Python
Python3.6通过自带的urllib通过get或post方法请求url的实例
May 10 Python
Python3.4学习笔记之类型判断,异常处理,终止程序操作小结
Mar 01 Python
PyQt5固定窗口大小的方法
Jun 18 Python
Django框架之登录后自定义跳转页面的实现方法
Jul 18 Python
python输入错误后删除的方法
Oct 12 Python
python实现简单飞行棋
Feb 06 Python
浅谈tensorflow模型保存为pb的各种姿势
May 25 Python
PyQt5多线程防卡死和多窗口用法的实现
Sep 15 Python
Python tempfile模块生成临时文件和临时目录
Sep 30 Python
python 如何做一个识别率百分百的OCR
May 29 Python
Python获取指定日期是"星期几"的6种方法
Mar 13 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
为了这两部电子管收音机,买了6套全新电子管和10粒刻度盘灯泡
2021/03/02 无线电
适用于抽奖程序、随机广告的PHP概率算法实例
2014/04/09 PHP
php+MySQL判断update语句是否执行成功的方法
2014/08/28 PHP
编写PHP脚本来实现WordPress中评论分页的功能
2015/12/10 PHP
php使用timthumb生成缩略图的方法
2016/01/22 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
javascript 无提示关闭窗口脚本
2009/08/17 Javascript
javascript面向对象包装类Class封装类库剖析
2013/01/24 Javascript
Jquery 动态循环输出表格具体方法
2013/11/23 Javascript
jQuery中 delegate使用的问题
2015/07/03 Javascript
JQuery的attr 与 val区别
2016/06/12 Javascript
jQuery Validate让普通按钮触发表单验证的方法
2016/12/15 Javascript
使用BootStrap进行轮播图的制作
2017/01/06 Javascript
纯JS实现简单的日历
2017/06/26 Javascript
微信小程序出现wx.navigateTo页面不跳转问题的解决方法
2017/12/26 Javascript
Vue源码探究之状态初始化
2018/11/14 Javascript
使用jQuery mobile NuGet让你的网站在移动设备上同样精彩
2019/06/18 jQuery
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
2020/12/01 Javascript
Python模块结构与布局操作方法实例分析
2017/07/24 Python
python安装numpy&安装matplotlib& scipy的教程
2017/11/02 Python
python实现从文件中读取数据并绘制成 x y 轴图形的方法
2018/10/14 Python
基于Python实现定时自动给微信好友发送天气预报
2018/10/25 Python
pandas pivot_table() 按日期分多列数据的方法
2018/11/16 Python
python ImageDraw类实现几何图形的绘制与文字的绘制
2020/02/26 Python
python 牛顿法实现逻辑回归(Logistic Regression)
2020/10/15 Python
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
HTML5学习心得总结(推荐)
2016/07/08 HTML / CSS
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
网络、C以及其他硬件方面的面试题
2016/08/23 面试题
一套带网友答案的.NET笔试题
2016/12/06 面试题
运动会获奖感言
2014/02/11 职场文书
Python django中如何使用restful框架
2021/06/23 Python
k8s部署redis cluster集群的实现
2021/06/24 Redis
SQLServer中JSON文档型数据的查询问题解决
2021/06/27 SQL Server
Python如何将list中的string转换为int
2022/07/15 Ruby