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 ...
随机推荐
- SQL优化系列(三)- 用最少的索引获得最大的性能提升
从全局出发优化索引 对于高负载的数据库,如何创建最少的索引,让数据库的整体性能提高呢?例如,对于100 条SQL语句,如何创建最佳的5条索引? SQL自动优化工具SQL Tuning Expert P ...
- maven的配置和使用
Maven 简介 1.1 Maven 是什么 翻译为“专家”,“内行” Maven是跨平台的项目管理工具.主要服务于基于Java平台的项目构建,依赖管理和项目信息管理. 1.2 为什么使用Maven ...
- iOS支付宝2.0 SDK集成整理
https://cshall.alipay.com/enterprise/help_detail.htm?help_id=473890 http://wenku.baidu.com/link?url= ...
- spring自动扫描的注解@Component @Controller @Service @Repository
@Component @Controller @Service @Repository的作用 1.@controller 控制器(注入服务)2.@service 服务(注入dao)3.@reposit ...
- pl/sql进阶——例外处理
在pl/sql的执行过程中发生异常时系统所作的处理称为一个例外情况(exception).通常例外情况的种类有三种: ①预定义的oracle例外情况,oracle预定义的例外情况大约有24个,对于这种 ...
- 初探postman
第一种:安装postman 扩展程序 第二种:本地 安装postman 登陆进来postman的界面 发送第一个postman请求 将请求保存到集合 未完,待续...
- 远程安装App到手机
注意: 必须是手机和电脑网络连通正常 1. 手机端安装终端模拟器. 2. 打开终端模拟器执行下面命令(也可以在adb shell中执行): su setprop service.adb.tcp.por ...
- @RequestBody对象为空,异常Required request body is missing错误解决
1.异常 org.springframework.http.converter.HttpMessageNotReadableException: Required request body is mi ...
- thinkphp5.0中英文切换
首先来看下它的配置: // 是否开启多语言 'lang_switch_on' => true, //语音列表 'lang_list' => ['zh-cn','en-us'], // 获取 ...
- MaxCompute 图计算用户手册(上)
概要 ODPS GRAPH是一套面向迭代的图计算处理框架.图计算作业使用图进行建模,图由点(Vertex)和边(Edge)组成,点和边包含权值(Value),ODPS GRAPH支持下述图编辑操作: ...