对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、MongoDB、Redis、memcache等数据库的方法
Nov 15 Python
python自动化工具日志查询分析脚本代码实现
Nov 26 Python
使用python在校内发人人网状态(人人网看状态)
Feb 19 Python
python中Genarator函数用法分析
Apr 08 Python
Python 模拟购物车的实例讲解
Sep 11 Python
python检测主机的连通性并记录到文件的实例
Jun 21 Python
Python实现随机创建电话号码的方法示例
Dec 07 Python
使用apiDoc实现python接口文档编写
Nov 19 Python
win7上tensorflow2.2.0安装成功 引用DLL load failed时找不到指定模块 tensorflow has no attribute xxx 解决方法
May 20 Python
scrapy中如何设置应用cookies的方法(3种)
Sep 22 Python
一篇文章教你用python画动态爱心表白
Nov 22 Python
Python中相见恨晚的技巧
Apr 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
ThinkPHP与PHPExcel冲突解决方法
2011/08/08 PHP
windows7下安装php的php-ssh2扩展教程
2014/07/04 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
动态表单验证的操作方法和TP框架里面的ajax表单验证
2017/07/19 PHP
PHP中一个有趣的preg_replace函数详解
2018/08/15 PHP
PHP使用DOM对XML解析处理操作示例
2019/07/04 PHP
PHP大文件分块上传功能实例详解
2019/07/22 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
JS网络游戏-(模拟城市webgame)提供的一些例子下载
2007/10/14 Javascript
Javascript四舍五入Math.round()与Math.pow()使用介绍
2013/12/27 Javascript
javascript版的in_array函数(判断数组中是否存在特定值)
2014/05/09 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
js+css实现文字散开重组动画特效代码分享
2015/08/21 Javascript
js常用DOM方法详解
2017/02/04 Javascript
BootStrap Datepicker 插件修改为默认中文的实现方法
2017/02/10 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
React-Native做一个文本输入框组件的实现代码
2017/08/10 Javascript
vue中promise的使用及异步请求数据的方法
2018/11/08 Javascript
详解JavaScript栈内存与堆内存
2019/04/04 Javascript
微信小程序如何通过用户授权获取手机号(getPhoneNumber)
2020/01/21 Javascript
讲解Python中的递归函数
2015/04/27 Python
python处理大数字的方法
2015/05/27 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
用Python将IP地址在整型和字符串之间轻松转换
2017/03/22 Python
pandas 透视表中文字段排序方法
2018/11/16 Python
Python requests.post方法中data与json参数区别详解
2020/04/30 Python
Python安装Bs4的多种方法
2020/11/28 Python
潘多拉珠宝英国官方网上商店:PANDORA英国
2018/06/12 全球购物
澳大利亚当地最大的时装生产商:Cue
2018/08/06 全球购物
JAVA招聘远程笔试题
2015/07/23 面试题
关于环保的建议书400字
2014/03/12 职场文书
精神文明单位申报材料
2014/05/02 职场文书
云冈石窟导游词
2015/02/04 职场文书
小学校长个人总结
2015/03/03 职场文书
教师节随笔
2015/08/15 职场文书
Win11安装受阻怎么办? Windows11安装问题与解决方案汇总
2021/11/21 数码科技