对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 命令行参数sys.argv
Sep 06 Python
python连接mysql并提交mysql事务示例
Mar 05 Python
Python与Redis的连接教程
Apr 22 Python
Python功能键的读取方法
May 28 Python
python实现随机梯度下降(SGD)
Mar 24 Python
python实现对求解最长回文子串的动态规划算法
Jun 02 Python
使用 Python 实现简单的 switch/case 语句的方法
Sep 17 Python
Python面向对象程序设计之私有属性及私有方法示例
Apr 08 Python
python删除文件夹下相同文件和无法打开的图片
Jul 16 Python
python内存管理机制原理详解
Aug 12 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
Aug 13 Python
给大家整理了19个pythonic的编程习惯(小结)
Sep 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
BBS(php & mysql)完整版(一)
2006/10/09 PHP
基于mysql的bbs设计(三)
2006/10/09 PHP
php中的mongodb select常用操作代码示例
2014/09/06 PHP
PHP简单的MVC框架实现方法
2015/12/01 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
PHP面向对象程序设计之多态性的应用示例
2018/12/19 PHP
Laravel Reponse响应客户端示例详解
2020/09/03 PHP
jQuery实现可拖动的浮动层完整代码
2013/05/27 Javascript
JavaScript的模块化:封装(闭包),继承(原型) 介绍
2013/07/22 Javascript
理解javascript对象继承
2016/04/17 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
Vue 将后台传过来的带html字段的字符串转换为 HTML
2018/03/29 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
浅谈Vue.js组件(二)
2019/04/09 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
[52:31]VP vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
[01:22:28]DOTA2-DPC中国联赛 正赛 SAG vs RNG BO3 第一场 1月18日
2021/03/11 DOTA
Python和GO语言实现的消息摘要算法示例
2015/03/10 Python
Python从文件中读取数据的方法讲解
2019/02/14 Python
python移位运算的实现
2019/07/15 Python
Python中使用gflags实例及原理解析
2019/12/13 Python
python实现录屏功能(亲测好用)
2020/03/02 Python
Python常用模块函数代码汇总解析
2020/08/31 Python
Canvas与Image互相转换示例代码
2013/08/09 HTML / CSS
KLOOK客路:发现更好玩的世界,预订独一无二的旅行体验
2016/12/16 全球购物
小学语文课后反思精选
2014/04/25 职场文书
质量保证书范本
2014/04/29 职场文书
商场父亲节活动方案
2014/08/27 职场文书
2014年客房部工作总结
2014/11/22 职场文书
办公室文员岗位职责
2015/02/04 职场文书
2015年项目经理工作总结
2015/04/30 职场文书
制作能在nginx和IIS中使用的ssl证书
2021/06/21 Servers
Python使用Beautiful Soup(BS4)库解析HTML和XML
2022/06/05 Python