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 BeautifulSoup使用方法详解
Nov 21 Python
python魔法方法-属性访问控制详解
Jul 25 Python
Python2.7基于笛卡尔积算法实现N个数组的排列组合运算示例
Nov 23 Python
matplotlib绘制动画代码示例
Jan 02 Python
python实现雨滴下落到地面效果
Jun 21 Python
Python正则匹配判断手机号是否合法的方法
Dec 09 Python
Python语言进阶知识点总结
May 28 Python
关于PyTorch源码解读之torchvision.models
Aug 17 Python
修改Pandas的行或列的名字(重命名)
Dec 18 Python
Pytest如何使用skip跳过执行测试
Aug 13 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
Nov 18 Python
Selenium关闭INFO:CONSOLE提示的解决
Dec 07 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中图片等比缩放的实例
2013/03/24 PHP
php简单浏览目录内容的实现代码
2013/06/07 PHP
PHP代码实现表单数据验证类
2015/07/28 PHP
PHP 中 DOMDocument保存xml时中文出现乱码问题的解决方案
2016/09/19 PHP
php查找字符串中第一个非0的位置截取
2017/02/27 PHP
PHP实现权限管理功能示例
2017/09/22 PHP
自定义一个jquery插件[鼠标悬浮时候 出现说明label]
2011/06/27 Javascript
java与javascript之间json格式数据互转介绍
2013/10/29 Javascript
一个奇葩的最短的 IE 版本判断JS脚本
2014/05/28 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
BootStrap table删除指定行的注意事项(笔记整理)
2017/02/05 Javascript
vue cli升级webapck4总结
2018/04/04 Javascript
详解Nodejs mongoose
2018/06/10 NodeJs
详解使用Next.js构建服务端渲染应用
2018/07/10 Javascript
JS实现方形抽奖效果
2018/08/27 Javascript
vue-router 实现导航守卫(路由卫士)的实例代码
2018/09/02 Javascript
vue3.0 CLI - 1 - npm 安装与初始化的入门教程
2018/09/14 Javascript
Vue项目History模式404问题解决方法
2018/10/31 Javascript
VUE兄弟组件传值操作实例分析
2019/10/26 Javascript
JS实现横向跑马灯效果代码
2020/04/20 Javascript
JQuery事件冒泡和默认行为代码实例
2020/05/13 jQuery
八种Vue组件间通讯方式合集(推荐)
2020/08/18 Javascript
Python3读取文件常用方法实例分析
2015/05/22 Python
Python如何生成树形图案
2018/01/03 Python
python实现用户答题功能
2018/01/17 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
Django实现文件上传下载
2019/10/06 Python
python pygame实现滚动横版射击游戏城市之战
2019/11/25 Python
python实现把两个二维array叠加成三维array示例
2019/11/29 Python
利用 Python ElementTree 生成 xml的实例
2020/03/06 Python
详解python的变量缓存机制
2021/01/24 Python
工伤事故处理协议书怎么写
2014/10/15 职场文书
慰问信模板
2015/02/14 职场文书
2015年医德医风工作总结
2015/04/02 职场文书
公司副总经理岗位职责
2015/04/08 职场文书
Python 使用 Frame tkraise() 方法在 Tkinter 应用程序中的Frame之间切换
2022/04/24 Python