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 ...
随机推荐
- JSP Web第六章整理复习 JavaBean技术
P183 什么是JavaBean,JavaBean有哪些特点? javabean是一种特殊的java类 特点:属性private,方法public P184 JavaBean封装数据,例6-1,6-2 ...
- PHP来控制Linux,ssh2来控制服务器端
注意:我们用PHP来控制Linux,php环境可以在windows也可以在linux,但是我们要控制的机器是一台linux(被控制的linux关闭selinux和firewalld). 如果php在l ...
- 使用 Apachetop 实时监测web服务器运行状况
转自 http://42.96.169.71/blog/2013/01/26/shi-yong-apachetop-shi-shi-jian-ce-webfu-wu-qi-yun-xing-zhuan ...
- 连接池c3p0
连接池c3p0 C3P0:hibernate和spring使用,有自动回收空闲连接的功能. 使用步骤: 1.导入jar包(c3p0-0.9.1.2.jar) 2.使用api a.硬编码(不推荐) ne ...
- JAVA高级--异常处理概念和异常处理机制
什么是异常 程序运行的过程中发生的一些不正常事件 异常分类 Throwable Error 错误 Exception IOException RuntimeException ...
- oracle loader
控制文件的格式 load data infile '数据文件名' into table 表名 (first_name position(01:14) char, sur ...
- [React Native]高度自增长的TextInput组件
之前我们学习了从零学React Native之11 TextInput了解了TextInput相关的属性. 在开发中,我们有时候有这样的需求, 希望输入区域的高度随着输入内容的长度而增长, 如下: 这 ...
- CPU核数和线程数查找
方法1: 方法2:
- DENSE_RANK(),允许并列名次、名次不间断,如122344456
将score按ID分组排名:dense_rank() over(partition by id order by score desc) 将score不分组排名:dense_rank() over(o ...
- POJ-3615_Cow Hurdles
Cow Hurdles Time Limit: 1000MS Memory Limit: 65536K Description Farmer John wants the cows to prepar ...