python基础之包的导入和__init__.py的介绍


Posted in Python onJanuary 08, 2018

调用同级目录:

? src 
|? mod.py 
|? test.py

若在程序test.py中导入模块mod, 则直接使用

import mod
或
from mod import *

调用子目录下的模块:

? src 
|? mod.py 
|? lib 
| |? mod2.py 
|? test.py

from lib.mod2 import *

或

import lib.mod2

调用上级目录下的文件

目录结构如下:

? src 
|? mod.py 
|? lib 
| |? mod2.py 
|? sub 
| |? test2.py
import sys
sys.path.append('C:\\test\\A\\C')
import mod
import lib.mod2

__init__.py

在python模块的每一个包中,都有一个__init__.py文件(这个文件定义了包的属性和方法)然后是一些模块文件和子目录,假如子目录中也有__init__.py 那么它就是这个包的子包了。当你将一个包作为模块导入(比如从 xml 导入 dom )的时候,实际上导入了它的__init__.py 文件。

一个包是一个带有特殊文件 __init__.py 的目录。__init__.py 文件定义了包的属性和方法。其实它可以什么也不定义;可以只是一个空文件,但是必须存在。如果 __init__.py 不存在,这个目录就仅仅是一个目录,而不是一个包,它就不能被导入或者包含其它的模块和嵌套包。

__init__.py 中还有一个重要的变量,叫做__all__。

如果此时目录如下

? src 
|? mod.py 
|? lib 
| |? mod2.py 
| |? mod3.py 
| |? sub 
| |? | |? mod3.py

我们有时会使出一招“全部导入”,也就是这样:

from lib import *

这时 import 就会把注册在包__init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中来。比如:

#文件__init__.py
__all__ = ["mod2", "mod3", "sub"]

总结:

对于其余路径下载py文件,要想导入,先加到sys.path中,然后再导入。

__init__.py的作用:

  • package的标识,不能删除
  • 定义package中的__all__,用来模糊导入
  • 编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)

总结

以上所述是小编给大家介绍的python基础之包的导入和__init__.py的介绍,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python学习笔记:字典的使用示例详解
Jun 13 Python
在Python中使用base64模块处理字符编码的教程
Apr 28 Python
Python常见加密模块用法分析【MD5,sha,crypt模块】
May 24 Python
Python中常用信号signal类型实例
Jan 25 Python
python使用opencv按一定间隔截取视频帧
Mar 06 Python
python求最大连续子数组的和
Jul 07 Python
对python文件读写的缓冲行为详解
Feb 13 Python
详解Python循环作用域与闭包
Mar 21 Python
Python3实现二叉树的最大深度
Sep 30 Python
python写一个随机点名软件的实例
Nov 28 Python
python如何安装下载后的模块
Jul 03 Python
Requests什么的通通爬不了的Python超强反爬虫方案!
May 20 Python
Python使用matplotlib的pie函数绘制饼状图功能示例
Jan 08 #Python
微信跳一跳自动运行python脚本
Jan 08 #Python
python3实现跳一跳点击跳跃
Jan 08 #Python
分数霸榜! python助你微信跳一跳拿高分
Jan 08 #Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 #Python
ubuntu环境下python虚拟环境的安装过程
Jan 07 #Python
详解Python核心编程中的浅拷贝与深拷贝
Jan 07 #Python
You might like
PHP array_push 数组函数
2009/12/26 PHP
利用php+mysql来做一个功能强大的在线计算器
2010/10/12 PHP
深入Nginx + PHP 缓存详解
2013/07/11 PHP
Linux下安装oracle客户端并配置php5.3
2014/10/12 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
php使用lua+redis实现限流,计数器模式,令牌桶模式
2019/04/04 PHP
php判断/计算闰年的方法小结【三种方法】
2019/07/06 PHP
PHP判断一个变量是否为整数、正整数的方法示例
2019/09/11 PHP
TP5多入口设置实例讲解
2020/12/15 PHP
jQuery选择器中含有空格的使用示例及注意事项
2013/08/25 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
2013/12/17 Javascript
js通过八个点 拖动改变div大小的实现方法
2014/03/05 Javascript
Area 区域实现post提交数据的js写法
2014/04/22 Javascript
iframe里的页面禁止右键事件的方法
2014/06/10 Javascript
Validform+layer实现漂亮的表单验证特效
2016/01/17 Javascript
Bootstrap~多级导航(级联导航)的实现效果【附代码】
2016/03/08 Javascript
JS实现动态修改table及合并单元格的方法示例
2017/02/20 Javascript
JS验证码实现代码
2017/09/14 Javascript
基于vue2.x的电商图片放大镜插件的使用
2018/01/22 Javascript
微信公众号网页分享功能开发的示例代码
2020/05/27 Javascript
如何在postman中添加cookie信息步骤解析
2020/06/30 Javascript
[50:21]Liquid vs Winstrike 2018国际邀请赛小组赛BO2 第二场
2018/08/19 DOTA
[02:29]大剑、皮鞭、女装,这届DOTA2勇士令状里都有
2020/07/17 DOTA
python中 logging的使用详解
2017/10/25 Python
对python中的高效迭代器函数详解
2018/10/18 Python
Python实现多态、协议和鸭子类型的代码详解
2019/05/05 Python
Tensorflow进行多维矩阵的拆分与拼接实例
2020/02/07 Python
推荐8款常用的Python GUI图形界面开发框架
2020/02/23 Python
在Pytorch中使用Mask R-CNN进行实例分割操作
2020/06/24 Python
Expedia丹麦:全球领先的旅游网站
2018/03/18 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
关于国庆节的演讲稿
2014/09/05 职场文书
2014年监理个人工作总结
2014/12/11 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
可怜妈妈观后感
2015/06/09 职场文书
导游词之西江千户苗寨
2019/12/24 职场文书