对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的Django框架中forms表单类的使用方法详解
Jun 21 Python
Python3学习笔记之列表方法示例详解
Oct 06 Python
Python实现PS图像明亮度调整效果示例
Jan 23 Python
python 实时得到cpu和内存的使用情况方法
Jun 11 Python
Python全排列操作实例分析
Jul 24 Python
对python:threading.Thread类的使用方法详解
Jan 31 Python
python三方库之requests的快速上手
Mar 04 Python
python try except返回异常的信息字符串代码实例
Aug 15 Python
python实现生成Word、docx文件的方法分析
Aug 30 Python
python实现文件批量编码转换及注意事项
Oct 14 Python
python文件绝对路径写法介绍(windows)
Dec 25 Python
解决pycharm导入本地py文件时,模块下方出现红色波浪线的问题
Jun 01 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
Sublime里直接运行PHP配置方法
2014/11/28 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
laravel框架模型和数据库基础操作实例详解
2020/01/25 PHP
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
JQuery替换DOM节点的方法
2015/06/11 Javascript
Javascript刷新窗口方法小结
2015/10/21 Javascript
jquery拖拽排序简单实现方法(效果增强版)
2016/02/16 Javascript
JavaScript基础教程——入门必看篇
2016/05/20 Javascript
Bootstrap实现的标签页内容切换显示效果示例
2017/05/25 Javascript
vue-cli中使用高德地图的方法示例
2019/03/28 Javascript
说说如何使用Vuex进行状态管理(小结)
2019/04/14 Javascript
vue基于better-scroll仿京东分类列表
2020/06/30 Javascript
JavaScript JSON使用原理及注意事项
2020/07/30 Javascript
bootstrap实现tab选项卡切换
2020/08/09 Javascript
python发送伪造的arp请求
2014/01/09 Python
Python实现微信公众平台自定义菜单实例
2015/03/20 Python
Python文件操作之合并文本文件内容示例代码
2017/09/19 Python
python使用xpath中遇到:到底是什么?
2018/01/04 Python
python对html过滤处理的方法
2018/10/21 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
pandas dataframe的合并实现(append, merge, concat)
2019/06/24 Python
Python 多线程其他属性以及继承Thread类详解
2019/08/28 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
python实现逻辑回归的示例
2020/10/09 Python
找到不普通的东西:Bonanza
2016/10/20 全球购物
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
澳大利亚最好的在线时尚精品店:Princess Polly
2018/01/03 全球购物
没有孩子的离婚协议书怎么写
2014/09/17 职场文书
单位委托书范本(3篇)
2014/09/18 职场文书
电影雷锋观后感
2015/06/10 职场文书
公司考勤管理制度
2015/08/04 职场文书