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 相关文章推荐
videocapture库制作python视频高速传输程序
Dec 23 Python
python网络编程实例简析
Sep 26 Python
Python语言描述最大连续子序列和
Dec 05 Python
用Python下载一个网页保存为本地的HTML文件实例
May 21 Python
python中使用ctypes调用so传参设置遇到的问题及解决方法
Jun 19 Python
pyinstaller打包opencv和numpy程序运行错误解决
Aug 16 Python
利用rest framework搭建Django API过程解析
Aug 31 Python
Python使用进程Process模块管理资源
Mar 05 Python
Python3 中sorted() 函数的用法
Mar 24 Python
基于Python pyecharts实现多种图例代码解析
Aug 10 Python
Python爬虫抓取论坛关键字过程解析
Oct 19 Python
Python正则表达式中flags参数的实例详解
Apr 01 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
谈一谈收音机的高放电路
2021/03/02 无线电
php 读取shell管道传输过来的内容
2010/03/01 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php对二维数组按指定键值key排序示例代码
2013/11/26 PHP
PHP时间日期增减操作示例【date strtotime实现加一天、加一月等操作】
2018/12/21 PHP
PHP执行系统命令函数实例讲解
2021/03/03 PHP
用js实现多域名不同文件的调用方法
2007/01/12 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
简略说明Javascript中的= =(等于)与= = =(全等于)区别
2013/04/16 Javascript
扩展js对象数组的OrderByAsc和OrderByDesc方法实现思路
2013/05/17 Javascript
js实现动态改变字体大小代码
2014/01/02 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
鼠标悬停小图标显示大图标
2016/01/22 Javascript
jQuery下拉框的简单应用
2016/06/24 Javascript
AngularJS实现星星等级评分功能
2016/09/24 Javascript
JavaScript数据结构链表知识详解
2016/11/21 Javascript
vue2.0开发入门笔记之.vue文件的生成和使用
2017/09/19 Javascript
详解IWinter 一个路由转控制器的 Nodejs 库
2017/11/15 NodeJs
vue+iview+less+echarts实战项目总结
2018/02/22 Javascript
js+css实现全屏侧边栏
2020/06/16 Javascript
举例讲解Python程序与系统shell交互的方式
2015/04/09 Python
python函数形参用法实例分析
2015/08/04 Python
Python 基于Twisted框架的文件夹网络传输源码
2016/08/28 Python
Python3.x对JSON的一些操作示例
2017/09/01 Python
python实现拓扑排序的基本教程
2018/03/11 Python
python爬虫实例详解
2018/06/19 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
python3转换code128条形码的方法
2019/04/17 Python
python数据处理之如何选取csv文件中某几行的数据
2019/09/02 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
使用tensorflow显示pb模型的所有网络结点方式
2020/01/23 Python
Django多数据库配置及逆向生成model教程
2020/03/28 Python
初始化了一个没有run()方法的线程类,是否会出错?
2014/03/27 面试题
学校办公室主任职责
2013/12/27 职场文书
2015年卫生院健康教育工作总结
2015/07/24 职场文书
SQL SERVER存储过程用法详解
2022/02/24 SQL Server