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里大整数相乘相关技巧指南
Sep 12 Python
Pycharm学习教程(1) 定制外观
May 02 Python
TensorFlow如何实现反向传播
Feb 06 Python
Python统计单词出现的次数
Apr 04 Python
Python使用pip安装pySerial串口通讯模块
Apr 20 Python
pycharm 配置远程解释器的方法
Oct 28 Python
OpenCV3.0+Python3.6实现特定颜色的物体追踪
Jul 23 Python
pytorch标签转onehot形式实例
Jan 02 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
tensorflow2.0与tensorflow1.0的性能区别介绍
Feb 07 Python
Django 允许局域网中的机器访问你的主机操作
May 13 Python
Python如何向SQLServer存储二进制图片
Jun 08 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
解析csv数据导入mysql的方法
2013/07/01 PHP
PHP和Shell实现检查SAMBA与NFS Server是否存在
2015/01/07 PHP
php生成图片验证码
2015/06/09 PHP
YII视图整合kindeditor扩展的方法
2016/07/13 PHP
php实现mysql连接池效果实现代码
2018/01/25 PHP
jsTree树控件(基于jQuery, 超强悍)[推荐]
2009/09/01 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
JS的replace方法详细介绍
2012/11/09 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
jQuery 跨域访问解决原理案例详解
2016/07/09 Javascript
AngularJS入门教程之XHR和依赖注入详解
2016/08/18 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
js/jq仿window文件夹框选操作插件
2017/03/08 Javascript
微信小程序 下拉列表的实现实例代码
2017/03/08 Javascript
jQuery常见面试题之DOM操作详析
2017/07/05 jQuery
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
AngularJS 实现购物车全选反选功能
2017/10/24 Javascript
详解使用JWT实现单点登录(完全跨域方案)
2019/08/02 Javascript
ionic+html5+API实现双击返回键退出应用
2019/09/17 Javascript
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
python 网络编程常用代码段
2016/08/28 Python
Python 多线程的实例详解
2017/09/07 Python
Django重置migrations文件的方法步骤
2019/05/01 Python
Tkinter中复选菜单是否被选中的判断与设置方式
2020/03/04 Python
python怎么调用自己的函数
2020/07/01 Python
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
优秀民警事迹材料
2014/01/29 职场文书
师德个人剖析材料
2014/02/02 职场文书
公休请假条
2014/04/11 职场文书
学校党员对照检查材料
2014/08/28 职场文书
补充协议书
2015/01/28 职场文书
简历自荐信范文
2015/03/09 职场文书
生产实习心得体会范文
2016/01/22 职场文书
8g内存用python读取10文件_面试题-python 如何读取一个大于 10G 的txt文件?
2021/05/28 Python
Spring Security使用单点登录的权限功能
2022/04/03 Java/Android
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers