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模块和包使用的更多相关文章
- 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 ...
随机推荐
- 奇异分解(SVD)
奇异分解 假设C是m×n矩阵,U是m×m矩阵,其中U的列为 的正交特征向量,V为n×n矩阵,其中V的列为 的正交特征向量,再假设r为C矩阵的秩,则存在奇异值分解: 其中和的特征值相同,为 ,且. 是m ...
- SPOJ QTREE Query on a tree 树链剖分+线段树
题目链接:http://www.spoj.com/problems/QTREE/en/ QTREE - Query on a tree #tree You are given a tree (an a ...
- ASP.NET中Page_Load()与Page_Init()的区别
Page_Init()事件:aspx初始化时触发,只执行一次,常用于页面初始化,并且执行在page_load之前,如果在aspx的程序中需要使用该方法,那么该方法的类需要继承 System.Web.U ...
- 《剑指offer》第六十二题(圆圈中最后剩下的数字)
// 面试题62:圆圈中最后剩下的数字 // 题目:0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里 // 删除第m个数字.求出这个圆圈里剩下的最后一个数字. #inclu ...
- 第 8 章 容器网络 - 054 - 准备 macvlan 环境
准备 macvlan 环境 macvlan 本身是 linux kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置 ...
- 第 8 章 容器网络 - 050 - 创建 overlay 网络
在 host1 中创建 overlay 网络 ov_net1: docker network create -d overlay ov_net1 -d overlay 指定 driver 为 over ...
- 动态规划-最大的正方形面积 Maximal Square
2018-09-13 19:19:44 问题描述: 问题求解: 方法一: 使用动态规划来求解,算法时间复杂度O(n^2). dp[i][j] : 以(i, j)为右下角的面积最大的正方形的边长. 初始 ...
- MySQL命令行的备份与还原
备份的语法; mysqldump -uroot -p shop> 数据库路径 还原的语法: mysql -uroot -p 具体数据库(shop0609)< 数据库路径
- Run-time code to create charts:
tChart1.Series.Clear(); tChart1.Series.Add(new Steema.TeeChart.Styles.Bar());tChart1.Series[0].Clear ...
- 协方差分析 | ANCOVA (Analysis of Covariance)
If you are worried about leaving out covariates you could regress out them first and analyse the res ...