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实现简单的代理服务器
Jul 25 Python
Python爬取三国演义的实现方法
Sep 12 Python
Python自定义线程类简单示例
Mar 23 Python
python3使用matplotlib绘制散点图
Mar 19 Python
解决python super()调用多重继承函数的问题
Jun 26 Python
python OpenCV GrabCut使用实例解析
Nov 11 Python
Pytorch中Tensor与各种图像格式的相互转化详解
Dec 26 Python
Python延迟绑定问题原理及解决方案
Aug 04 Python
详解Python 函数参数的拆解
Sep 02 Python
matplotlib之pyplot模块坐标轴标签设置使用(xlabel()、ylabel())
Feb 22 Python
Pyhton模块和包相关知识总结
May 12 Python
如何使用Python提取Chrome浏览器保存的密码
Jun 09 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版自动生成文章摘要
2008/07/23 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
php技巧小结【推荐】
2017/01/19 PHP
php+Ajax无刷新验证用户名操作实例详解
2019/03/04 PHP
php用wangeditor3实现图片上传功能
2019/08/22 PHP
用倒置滤镜把div倒置,再把table倒置。
2007/07/31 Javascript
ExtJS4 动态生成的grid导出为excel示例
2014/05/02 Javascript
NodeJS Express框架中处理404页面一个方式
2014/05/28 NodeJs
javascript学习指南之回调问题
2016/04/23 Javascript
AngularJS基础 ng-switch 指令简单示例
2016/08/03 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
vue 微信授权登录解决方案
2018/04/10 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
react项目实践之webpack-dev-serve
2018/09/14 Javascript
Vue实现简单分页器
2018/12/29 Javascript
node.js实现上传文件功能
2019/07/15 Javascript
Vue中key的作用示例代码详解
2020/06/10 Javascript
Python是编译运行的验证方法
2015/01/30 Python
python中map()函数的使用方法示例
2017/09/29 Python
用matplotlib画等高线图详解
2017/12/14 Python
python实现求特征选择的信息增益
2018/12/18 Python
基于Python的PIL库学习详解
2019/05/10 Python
基于django ManyToMany 使用的注意事项详解
2019/08/09 Python
python对验证码降噪的实现示例代码
2019/11/12 Python
Python过滤序列元素的方法
2020/07/31 Python
Skyscanner英国:苏格兰的全球三大领先航班搜索服务之一
2017/11/09 全球购物
捷克时尚网上商店:OTTO
2018/03/15 全球购物
奥巴马的演讲稿
2014/05/15 职场文书
企业宣传工作方案
2014/06/02 职场文书
文明工地标语
2014/06/16 职场文书
实习科室评语
2015/01/04 职场文书
2015年人力资源部工作总结
2015/04/30 职场文书
Ajax实现局部刷新的方法实例
2021/03/31 Javascript
用javascript制作qq注册动态页面
2021/04/14 Javascript
js中Map和Set的用法及区别实例详解
2022/02/15 Javascript