欢迎使用CSDN-markdown编辑器
来源:互联网 发布:天刀女神刀捏脸数据 编辑:程序博客网 时间:2024/06/06 14:18
python __init__.py
标签(空格分隔): python
package,module是python中对外发布程序的封装机制。
- package 一个含有众多python源代码文件和一个特殊的
__init__.py
文件的文件夹,package是可以嵌套的,也就是说一个package下面有可以有package- module 每个python文件其实就是一个module
__init__.py
,这个文件我们可以把他看作是一个package中的一个重要module。
__init__.py
的初衷?
既然一个package就是一个包含了python文件的目录,那么,如何判定这个文件夹就是一个package呢?
假如在当前目录有一个名叫http的空目录,假如python认为它就是http的package,那么程序就无法调用真正的http包了。
所以python规定,只有当一个目录含有__init__.py
时,才能确定该目录是一个合法的package
__init__.py
仅仅如此吗?
如果该文件仅仅是为了判定该目录是不是一个包,那么每个包目录下有一个空的且文件名为
__init__.py
不就可以了? 拿衣服呀~
python做了对该文件做了更加详细的规定,使得文件python的导入过程和该文件息息相关
__init__.py
的作用
只要被import的包,模块,符号是属于一个package的,那么这个包的__init__.py
就会在之前被import。
比如 package1/subpackage/module.py 中有一个全局变量var
import package1.subpackage.module.varfrom package1/subpackage import module
这两句import语句当中,import都会先import package1的__init__.py
,然后再import subpackage的__init__.py
再说import
常见导入方式 1
from xxx import yyyxxx: 可以是package,moduleyyy: 当xxx是package时,yyy可以是module或package 当xxx是module时,yyy只能是module内的符号
常见导入方式 2
import xxx这种方式比较简单,xxx可以是 package module symbol
常见导入方式 3
from xxx import *
如果xxx是一个package,那条语句相当于
import xxx.__init__for i in xxx.__init__.__all__: import i
例子:
#file : xxx.__init____all__= [package1, module1,symbol]
那么当执行from xxx import *,相当于
import xxx.__init__import package1import module1import symbol
p.s. 如果没有定义 __all__
,那么只有__init__.py
被导入
如果xxx是一个module
在模块(*.py)中使用意为导出all列表里的类、函数、变量等成员,
否则将导出modualA中所有不以下划线开头(私有)的成员,
在模块中使用all属性可避免在相互引用时的命名冲突
reference:
https://docs.python.org/3/tutorial/modules.html#packages
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- c# byte[] 与string转化
- Nginx服务器配置文件nginx.conf实例详解
- Android热修复总结
- “风雨十年,未来何去何从”一篇文看懂Hadoop
- 浅谈view
- 欢迎使用CSDN-markdown编辑器
- 几种常见的排序
- 项目中,对于Csv表的读取
- List 源码解析
- 计算机基础四之数制和信息的编码下
- Robotium常用API
- 单源最短路径
- 上位机笔记
- iOS利用JSPatch实现热修复的前后台代码