Python模块和包使用
1、什么是模块
模块就是一个.py的文件
2、为什么要使用模块?
最开始的程序(没有任何组织)----> 函数------>类----->模块------>包 为了让程序的组织结构更加灵活清晰,降低耦合性、方便管理;
3、如何使用模块
1、import:只能导入在当前目录、和内置的模块,使用模块里的内容需要 模块.来调用;
2、from...import:可以导入不是同级目录的模块,导入模块之后,可以直接调用模块里的内容;
3、导入模块做的3件事情
#导入模块第一件事情 创建名称空间,用来存放模块文件中定义的名字
#第二件事情基于刚刚创建的名称空间,找执行一遍模块文件里的内容
#第三件事情spm.操作名称空间模块里的内容
4、模块的搜素路径
总结模块的查找顺序是:内存中已经加载的模块--------->内置模块------------>sys.path路径中包含的模块(sys.path包含当前目录)
二、包
1、什么是包?
包是一种通过使用‘.模块名’来组织python模块名称空间的方式。本质就一个包含__init__文件的目录
无论是import形式还是from...import形式,凡是在导入语句中(而不是在使用时)遇到带点的,都是关于 包才有的导入语法
from .auth.plugins.core import create,UserAuthInfo # 在 .(当前路径)auth(auth包).plugins(包).core(模块) import( create,UserAuthInfo)属性 .左边的都是包 最后一个可以是模块
2、使用包
import (import包名.包名.包名.最后是模块)
import glance.db.models glance.db.models.register_models('mysql')
from (包名.包名)... import ...(import后面的是模块)
from bao.bao1 import *
如果import后面不指定一个模块名,只会执行包下的__init__文件
会执行包下的__init__文件定义的__all__=[x,y.z]的内容
from glance.db import models models.register_models('mysql') from glance.db.models import register_models register_models('mysql')
3、包里的__init__.py文件
#在其他模块 导入import keystone包的时候,会首先执行keystone包下的__init__文件。
# 如果在__init__文件导入了auth.(包)plugins.(包)core(模块) import create,UserAuthInfo(方法)
# 那么 import keystone 就可以直接执行 keystone子包下的 模块和模块里的方法了
4、绝对导入和相对导入
绝对导入:以glance 作为起始
相对导入:用.或者..的方式最为起始(只能在一个包中使用,不能用于不同目录内)
在glance/api/version.py #绝对导入 from glance.cmd import manage manage.main() #相对导入 from ..cmd import manage manage.main()
5、单独导入
#在与glance同级的test.py中 import glance glance.cmd.manage.main() ''' 执行结果: AttributeError: module 'glance' has no attribute 'cmd' '''
- python模块之threading: 在python中使用多线程
- 使用Visual Studio 6.0 (C/C++)开发Python扩展模块
- 使用Python的timeit模块
- 今天犯了一个很蠢的错误,有关python的模块包的使用的
- PYTHON正则表达式 re模块使用说明
- VS2005使用distutils模块自动编译python扩展模块
- 如何使用和制作 Python 安装模块(setup.py)
- 使用Python(comtypes)操作ArcGis(ArcObject)的第一步:安装模块到gen文件夹中
- [转]可爱的 Python:: 使用 itertools 模块中的组合函数
- 在python中使用c语言扩展模块的简单示例
- 使用python的ConfigParser模块方便的读取配置文件
- python模块之threading: 在python中使用多线程
- 在Python 中使用模块和类
- 使用Python的MD5模块比较两个文件是否一致
- 使用setuptools自动安装python模块
- 使用Visual Studio.Net 2005开发Python扩展模块
- Base64 编码原理简介和python的base64模块的使用
- 使用 Boost.Python 嵌入 Python 模块到 C++
- python 模块使用
- 使用setuptools自动安装python模块