对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实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
python解决网站的反爬虫策略总结
Oct 26 Python
利用PyInstaller将python程序.py转为.exe的方法详解
May 03 Python
python递归打印某个目录的内容(实例讲解)
Aug 30 Python
Python3.6实现连接mysql或mariadb的方法分析
May 18 Python
PyTorch CNN实战之MNIST手写数字识别示例
May 29 Python
python生成九宫格图片
Nov 19 Python
详解Python文件修改的两种方式
Aug 22 Python
Python使用itchat模块实现群聊转发,自动回复功能示例
Aug 26 Python
浅谈python中统计计数的几种方法和Counter详解
Nov 07 Python
使用Python快速打开一个百万行级别的超大Excel文件的方法
Mar 02 Python
一行Python命令实现批量加水印
Apr 07 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获取一个变量的名字的方法
2014/09/05 PHP
ThinkPHP 3使用OSS的方法
2018/07/19 PHP
根据json字符串生成Html的一种方式
2013/01/09 Javascript
基于jquery的9行js轻松实现tab控件示例
2013/10/12 Javascript
js charAt的使用示例
2014/02/18 Javascript
javascript编写实用的省市选择器
2015/02/12 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
JS控制鼠标拒绝点击某一按钮的实例
2017/12/29 Javascript
NodeJS实现同步的方法
2019/03/02 NodeJs
Vue实现手机计算器
2020/08/17 Javascript
[50:20]DOTA2上海特级锦标赛主赛事日 - 5 总决赛Liquid VS Secret第四局
2016/03/06 DOTA
[02:04]完美世界城市挑战赛秋季赛报名开始 谁是solo路人王?
2019/10/10 DOTA
Python编程实现生成特定范围内不重复多个随机数的2种方法
2017/04/14 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
python可视化text()函数使用详解
2020/02/11 Python
Python编程快速上手——选择性拷贝操作案例分析
2020/02/28 Python
Data URI scheme详解和使用实例及图片base64编码实现方法
2014/05/08 HTML / CSS
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
台湾SHOPRO购物行家:亚洲首创影视.3C.家电.优质购物平台
2018/05/07 全球购物
中东奢侈品市场:Coveti
2019/05/12 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
汇智创新科技发展有限公司
2015/12/06 面试题
菜篮子工程实施方案
2014/03/08 职场文书
父母对孩子说的话
2014/04/12 职场文书
企业诚信承诺书
2014/05/23 职场文书
党性观念心得体会
2014/09/03 职场文书
办理房产过户的委托书
2014/09/14 职场文书
试用期转正员工自我评价
2014/09/18 职场文书
2014年卫生保健工作总结
2014/12/08 职场文书
介绍信格式样本
2015/05/05 职场文书
2016年度农村党员干部主题教育活动总结
2016/04/06 职场文书
nginx的zabbix 5.0安装部署的方法步骤
2021/07/16 Servers