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模块和包使用的更多相关文章

  1. Python/模块与包之模块

    Python/模块与包之模块 1.什么是模块? 模块就是py文件 2.为什么要用模块? 如果在解释器上进行编码,把解释器关闭之前写的文件就不存在了,如果使用模块的话就能永久保存在磁盘中. 3.如何使用 ...

  2. Python模块、包、异常、文件(案例)

    Python模块.包.异常.文件(案例) python.py #模块 # Python中的模块(Module),是一个Python文件,以.py文件结尾,包含了Python对象定义和Python语句, ...

  3. 【Python】解析Python模块与包

    模块 模块是非常简单的Python文件,单个Python文件就是一个模块,两个文件就是两个模块. import语句是用来导入模块或者从模块里导入特定的类或者函数.如前面我们用过的math模块,从而可以 ...

  4. python 模块和包深度学习理解

    python 模块和包 简单说相当于命名空间 1,python 模块        python模块就是一个文件,里面有函数,变量等 import 模块 模块.方法 from 模块 import fu ...

  5. (三)运用Python模块和包

    1 引言 为了能够在Python项目中高效地运用Python模块和包,我们需要进一步地来了解它们是如何在Python项目中进行定义.使用和工作的. 2 Python模块和包 Python模块和包的基本 ...

  6. Python模块04/包/logging日志

    Python模块04/包/logging日志 目录 Python模块04/包/logging日志 内容大纲 1.包 2.logging日志 3.今日总结 内容大纲 1.包 2.logging日志 1. ...

  7. Python模块和包

    模块和包是python组织代码的基本方式. 模块: python的每一个脚本文件都可称之为模块,模块的名称就是脚本的文件名.例如当我们写了一个test.py的脚本文件,则可以在同目录下的另外一个脚本m ...

  8. python模块与包的导入

    1. 模块与包的区别 模块,即module,一个包含python语句的.py文件就是一个模块!每个源代码文件都会自动成为模块!没有额外的语法用来声明模块. 包,又称模块包,即module packag ...

  9. python模块及包的导入

    一.模块 通常模块为一个文件,直接使用import来导入就好了.可以作为module的文件类型有".py".".pyo".".pyc".&q ...

  10. 简述Python模块和包

    我们常常会使用别人写的包,假如我们使用的是Python3.4版本,安装在windows的C盘根目录下,那么外部的包一般放在:C:\Python34\Lib\sit-packages下,此目录下有以.p ...

随机推荐

  1. 奇异分解(SVD)

    奇异分解 假设C是m×n矩阵,U是m×m矩阵,其中U的列为 的正交特征向量,V为n×n矩阵,其中V的列为 的正交特征向量,再假设r为C矩阵的秩,则存在奇异值分解: 其中和的特征值相同,为 ,且. 是m ...

  2. 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 ...

  3. ASP.NET中Page_Load()与Page_Init()的区别

    Page_Init()事件:aspx初始化时触发,只执行一次,常用于页面初始化,并且执行在page_load之前,如果在aspx的程序中需要使用该方法,那么该方法的类需要继承 System.Web.U ...

  4. 《剑指offer》第六十二题(圆圈中最后剩下的数字)

    // 面试题62:圆圈中最后剩下的数字 // 题目:0, 1, …, n-1这n个数字排成一个圆圈,从数字0开始每次从这个圆圈里 // 删除第m个数字.求出这个圆圈里剩下的最后一个数字. #inclu ...

  5. 第 8 章 容器网络 - 054 - 准备 macvlan 环境

    准备 macvlan 环境 macvlan 本身是 linux kernel 模块,其功能是允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置 ...

  6. 第 8 章 容器网络 - 050 - 创建 overlay 网络

    在 host1 中创建 overlay 网络 ov_net1: docker network create -d overlay ov_net1 -d overlay 指定 driver 为 over ...

  7. 动态规划-最大的正方形面积 Maximal Square

    2018-09-13 19:19:44 问题描述: 问题求解: 方法一: 使用动态规划来求解,算法时间复杂度O(n^2). dp[i][j] : 以(i, j)为右下角的面积最大的正方形的边长. 初始 ...

  8. MySQL命令行的备份与还原

    备份的语法;  mysqldump -uroot -p shop> 数据库路径 还原的语法:  mysql -uroot -p 具体数据库(shop0609)< 数据库路径

  9. Run-time code to create charts:

    tChart1.Series.Clear(); tChart1.Series.Add(new Steema.TeeChart.Styles.Bar());tChart1.Series[0].Clear ...

  10. 协方差分析 | ANCOVA (Analysis of Covariance)

    If you are worried about leaving out covariates you could regress out them first and analyse the res ...