详解python __init__.py 和 __all__作用
作者:lizi0403 发布时间:2023-08-22 06:55:22
python __init__.py 和 __all__作用
一、__init__.py
1、导入文件夹包的时候,会运行写在该文件夹包下的__init__.py文件
如 import package
import package.xxx
from package import xxx 等
这样会自动运行package文件夹下的__init__.py文件
2、__init__.py文件中可以定义该文件夹包的名字空间,定义的方法就是在__init__.py文件里导入这些名字
如在package文件夹下的__init__.py文件里,可以导入该文件夹下的所有py文件(模块),这样就将所有模块名导入了package的名字空间:
如package文件夹下有file1.py和file2.py两个模块
在package的__init__.py里from . import *就将file1和file2导入了package的名字空间
这样在别处import package导入package包,就可以正常写调用语句如package.file1.func(), package.file2.func()
二、__all__属性
文件夹包下的__ini__.py文件里可以定义__all__属性,作用是在别处模糊导入该包中的所有名字时(from package import *),可以隐藏包中名字空间中的一些名字
补充:python 包 __init__ .py 作用 和 __all__方法
__init__.py的主要作用:
1. Python中package的标识,不能删除
2. 定义__all__用来模糊导入
3. 编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)
__all__的作用:
模糊导入中的*中的模块是由__all__来定义的,__init__.py的另外一个作用就是定义package中的__all__,用来模糊导入,如__init__.py:
来源:https://blog.csdn.net/qq_41021141/article/details/128933527


猜你喜欢
- 一、Spring Boot原理用户从页面前端,也就是我们所说的 view 层进行查询访问,进入到 controller 层找到对应的接口,接
- 1. 引言在Python中有很多好玩的花式打印,对厉害的高手来说可能是小菜一碟,对入门的小白来说往往让人望而退步,我们今天就来挑战下面三个常
- 看下面这个函数def test(): sum = 3/0if __name__ == '__main__': test()除
- 在使用Python多年以后,我偶然发现了一些我们过去不知道的功能和特性。一些可以说是非常有用,但却没有充分利用。考虑到这一点,我编辑了一些你
- 一、mac下安装MySQL数据库1.下载MySQL数据库下载地址:访问MySQL的官网http://www.mysql.com/downlo
- 软硬件环境OS X EI CapitanPython 3.5.1mysql 5.6前言在开发中经常涉及到数据库的使用,而python对于数据
- Tag,直译标签,是一种由用户自定义的、用于描述信息 [1]的关键词。Tagging是用户为信息赋予Tag的行为。Delicious,Fli
- --创建数据库(文件:主要数据文件mdf==1,次要数据文件ndf>=0,日志文件ldf>=1)--文件组:当1mdf,5个nd
- 我们在用Drwamweaver书写英文文本时,段落一般不缩进(不支持半角空格);但我们大多的时候都是用中文书写格式,必须在每段开头空两个汉字
- 什么是pyecharts?pyecharts 是一个用于生成 Echarts 图表的类库。echarts是百度开源的一个数据可视化 JS 库
- 函数内省(function introspection)除了__doc__属性, 函数对象还有很多属性,对于下面的函数,可以使用dir()查
- 假如有一列全是字符串的dataframe,希望提取包含特定字符的所有数据,该如何提取呢?因为之前尝试使用filter,发现行不通,最终找到这
- 本文实例讲述了Python实现计算文件MD5和SHA1的方法。分享给大家供大家参考,具体如下:不多说,直接源码:#file md5impor
- django {% url %} 模板标签使用inclusions/_archives.html...{% for date in date
- 经常开发asp但对于细致的说法,真实不太清楚,这里简单的介绍下。一般情况下读取数据都是用rs.open sql,conn,1,1修改数据:r
- 前言: 在爬虫过程中,我们可能需要重复的爬取同一个网站,为了避免重复的数据存入我们的数据库中 通过实现增量去重 去解决这一问题 本文还针对了
- prototype框架最早是出于方便Ruby开发人员进行JavaScript开发所构建的,从这个版本上更加体现的淋漓尽致。比起1.3.1版本
- 首先获取ip:<% userip=Request.ServerVariables(&qu
- Purge死锁场景说明Purge死锁说明表中存在记录(unique key) 10,20,30,40 (且有 自增主键 ),现在删除记录 2
- 如果你学过操作系统,那么对于锁应该不陌生。锁的含义是线程锁,可以用来指定某一个逻辑或者是资源同一时刻只能有一个线程访问。这个很好理解,就好像