python模块之包
包:将解决一类问题的模块放在同一目录下就形成了一个包
为了更好的了解包,我们就模拟创建一个包
import os
os.makedirs('glance/api')
os.makedirs('glance/cmd')
os.makedirs('glance/db')
lis = [open('glance/__init__.py', 'w'),
open('glance/api/__init__.py', 'w'),
open('glance/api/policy.py', 'w'),
open('glance/api/versions.py', 'w'),
open('glance/cmd/__init__.py', 'w'),
open('glance/cmd/manage.py', 'w'),
open('glance/db/__init__.py', 'w'),
open('glance/db/models.py', 'w')]
map(lambda f: f.close(), lis)
我们创建的那些'.py'文件就相当于一个个模块,可以在里面写一个简单的函数,用作测试。
包中模块的导入
# 通过包名.目录.模块名 将包内部的模块导入
import glance.api.policy as policy
policy.get()
__init__.py文件的作用
# 每个包下面都要有一个__init__.py文件 导入包时,就会执行这个文件
f = open('glance/__init__.py', 'w', encoding='utf-8')
f.write("print('this is glance/__init__.py')")
f.close()
import glance # 打印this is glance/__init__.py
因此在我们自己创建一个包时,就可以利用__init__.py在完成内层的导入工作。
"""
因此可以通过在__init__.py文件提前写好包的下一层的导入代码
from glance import api
from glance import cmd
from glance import db
"""
f = open('glance/api/__init__.py', 'w', encoding='utf-8')
f.write("print('this is glance/api/__init__.py')")
f.close()
# 执行了from glance import api 进而执行了api下的__init__.py
import glance # 打印this is glance/api/__init__.py # 在api下的__init__.py写好 from glance.api import policy
import glance
glance.api.policy.get() # 打印from policy.py
"""
通过这种提前在__init__.py文件中写好下一层所有内容的导入代码的方式
只需要import包名就可以导入下面的所有模块
"""
一般有两种导入方式:绝对路径导入和相对路径导入
1,绝对路径导入
# 绝对路径导入 在__init__.py文件中写导入代码时,使用绝对路径,如:from glance.api import policy
"""
优点:导入后,不管在包内部还是外部都可以使用,并且直观。
缺点:不能挪动,不然就会找不对路径
"""
2,相对路径导入
# 相对路径导入 在__init__.py文件中写导入代码时,使用相对路径,如:from . import policy
"""
'.'代表当前目录
优点:可以随意挪动,只要能找包,里面的模块就能正常导入
缺点:不能在包内使用包中的其他模块,执行导入会报错
"""
python模块之包的更多相关文章
- Python/模块与包之模块
Python/模块与包之模块 1.什么是模块? 模块就是py文件 2.为什么要用模块? 如果在解释器上进行编码,把解释器关闭之前写的文件就不存在了,如果使用模块的话就能永久保存在磁盘中. 3.如何使用 ...
- Python模块、包、异常、文件(案例)
Python模块.包.异常.文件(案例) python.py #模块 # Python中的模块(Module),是一个Python文件,以.py文件结尾,包含了Python对象定义和Python语句, ...
- 【Python】解析Python模块与包
模块 模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块. import语句是用来导入模块或者从模块里导入特定的类或者函数.如前面我们用过的math模块,从而可以 ...
- python 模块和包深度学习理解
python 模块和包 简单说相当于命名空间 1,python 模块 python模块就是一个文件,里面有函数,变量等 import 模块 模块.方法 from 模块 import fu ...
- (三)运用Python模块和包
1 引言 为了能够在Python项目中高效地运用Python模块和包,我们需要进一步地来了解它们是如何在Python项目中进行定义.使用和工作的. 2 Python模块和包 Python模块和包的基本 ...
- Python模块04/包/logging日志
Python模块04/包/logging日志 目录 Python模块04/包/logging日志 内容大纲 1.包 2.logging日志 3.今日总结 内容大纲 1.包 2.logging日志 1. ...
- Python模块和包
模块和包是python组织代码的基本方式. 模块: python的每一个脚本文件都可称之为模块,模块的名称就是脚本的文件名.例如当我们写了一个test.py的脚本文件,则可以在同目录下的另外一个脚本m ...
- python模块与包的导入
1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...
- python模块及包的导入
一.模块 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc".&q ...
- 简述Python模块和包
我们常常会使用别人写的包,假如我们使用的是Python3.4版本,安装在windows的C盘根目录下,那么外部的包一般放在:C:\Python34\Lib\sit-packages下,此目录下有以.p ...
随机推荐
- 配置了两天python【python可以的】
首先是看cs231n 发现代码的版本是py2 而我只装了 py3(anaconda3) 怎么办呢 于是想办法装了 anaconda2 并与之共存 ,调用的时候用 activate py2调用 http ...
- OSI七层模型,作用及其对应的协议
物理层(Physical Layer):利用传输介质为数据链路层提供物理连接,实现比特流的透明传输 数据链路层(Data Link Layer):负责建立和管理节点间的链路 网络层(Network L ...
- small标签
<small> 标签将旁注 (side comments) 呈现为小型文本. 免责声明.注意事项.法律限制或版权声明的特征通常都是小型文本.小型文本有时也用于新闻来源.许可要求. 对于由 ...
- kubernetes1.4新特性:支持两种新的卷插件
背景介绍 在Kubernetes中卷的作用在于提供给POD持久化存储,这些持久化存储可以挂载到POD中的容器上,进而给容器提供持久化存储. 从图中可以看到结构体PodSpec有个属性是Volumes, ...
- LeafLet 简单使用
Leaflet 使用 最近在Angular项目中,用到了地图,由于种种原因放弃了百度地图api使用,最后选择了leaflet,简单介绍一下. 介绍: Leaflet 是一个为移动设备设计的交互式地图的 ...
- 【JZOJ4791】【NOIP2016提高A组模拟9.21】矩阵
题目描述 在麦克雷的面前出现了一个有n*m个格子的矩阵,每个格子用"."或"#"表示,"."表示这个格子可以放东西,"#" ...
- EasyUI 网格 一主多从 从表使用自定义树状展开
<table id="Table1" class="easyui-datagrid" title="标题" style="w ...
- 易位构词EOJ3451【字符串】【思维题】【模拟】
http://acm.ecnu.edu.cn/problem/3451/ 官方题解: 我们可以先考虑字符串有序的情况,比如是 aaabcc,我们只要将字符串右移 3 位,变成 bccaaa,就做完了. ...
- CS第三方控件 标签: 总结 2016-04-09 11:51 1398人阅读 评论(27) 收藏
大家都知道,我现在在做CS的项目,现在是需求频变啊,心里好苦,做了这么久,还是涨了一点点见识的,下面就介绍一下自己最近用到的几款CS的第三方控件. DockPanel 想必大家都用过VS,那么想一下V ...
- iOS UIWebView URL拦截
http://www.cocoachina.com/ios/20150626/12161.html 本文译者:candeladiao,原文:URL filtering for UIWebView on ...