对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函数作用域的LEGB顺序
May 14 Python
Python中模块与包有相同名字的处理方法
May 05 Python
如何在python中使用selenium的示例
Dec 26 Python
Django后台获取前端post上传的文件方法
May 28 Python
python判断所输入的任意一个正整数是否为素数的两种方法
Jun 27 Python
python 自定义装饰器实例详解
Jul 20 Python
python多线程分块读取文件
Aug 29 Python
Django中提示消息messages的设置方式
Nov 15 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
python3 中时间戳、时间、日期的转换和加减操作
Jul 14 Python
用python 绘制茎叶图和复合饼图
Feb 26 Python
python游戏开发Pygame框架
Apr 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
php selectradio和checkbox默认选择的实现方法详解
2013/06/29 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
php采集内容中带有图片地址的远程图片并保存的方法
2015/01/03 PHP
PHP 断点续传实例详解
2017/11/11 PHP
php框架CodeIgniter使用redis的方法分析
2018/04/13 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
如何快速的呈现我们的网页的技巧整理
2007/07/01 Javascript
ASP.NET jQuery 实例18 通过使用jQuery validation插件校验DropDownList
2012/02/03 Javascript
jQuery实现悬浮在右上角的网页客服效果代码
2015/10/24 Javascript
FullCalendar日历插件应用之数据展现(一)
2015/12/23 Javascript
JavaScript学习总结之JS、AJAX应用
2016/01/29 Javascript
jQuery实现返回顶部功能
2016/02/23 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
Vue之Vue.set动态新增对象属性方法
2018/02/23 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
基于Vue实现微信小程序的图文编辑器
2018/07/25 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
Vue配置marked链接添加target="_blank"的方法
2019/07/19 Javascript
在Python中使用PIL模块处理图像的教程
2015/04/29 Python
开始着手第一个Django项目
2015/07/15 Python
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
python操作xlsx文件的包openpyxl实例
2018/05/03 Python
Django中使用第三方登录的示例代码
2018/08/20 Python
深入浅析Python中的迭代器
2019/06/04 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
2020/03/06 Python
python 字符串的驻留机制及优缺点
2020/06/19 Python
CSS3 animation实现简易幻灯片轮播特效
2016/09/27 HTML / CSS
html5生成柱状图(条形图)效果的实例代码
2016/03/25 HTML / CSS
Linux上比较文件的命令都有哪些
2012/02/24 面试题
应届大学生求职信
2013/12/01 职场文书
会议邀请书范文
2014/02/02 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
运动会广播稿诗歌版
2014/09/12 职场文书
六查六看自查报告
2014/10/14 职场文书
高中体育课教学反思
2016/02/16 职场文书
SQL CASE 表达式的具体使用
2022/03/21 SQL Server