python的模块和包
模块
python语言的组织结构层次:
包->模块->代码文件->类->函数->代码块
什么是模块呢
可以把模块理解为一个代码文件的封装,这是比类更高一级的封装层次
一个写好的模块可以导入给其他python文件来用,在其他语言中,这种通常被称为库
比如C语言的库函数之类的
C语言中这样引用 #include <stdio.h>
python中则是 import XXX
模块在python中分为第三方模块,用户自定义模块,标准模块三部分
用户自定义模块很好理解,就是用户自己编写的模块
而第三方模块则是python比如pypi上的可以下载的包,比如django就是的
用户编写模块,可以编写一个文件,那么模块名就是这个文件名
要引用这个模块内的函数 就是 from 模块名 import 函数名
接下来,就可以直接用这个导入的模块内的函数了
或者,import 模块名
那么用这个模块内的函数需要这样用 模块名.函数名
模块的优点
- 可以更好的组织程序结构
- 提高了代码的可复用性,比如,我们引用python的标准模块,比如os模块,sys模块,就是利用现有的方法再去做自己的事情
- 使用模块也可以更好的管理命名空间,比如同名变量,同名函数只要分布在不同的python模块里,就没有关系,但是还是要注意不要和系统函数名,python关键字等发生冲突
包package
包是组织模块的工具
在python里,用目录的形式来组织模块,模块所在的目录成为包
包所在的目录有个特定,一定要有一个空的__init__,py文件,才会被识别为包
否则,在导入的时候会提示,没有这个模块等异常抛出
下面分别举例子说明导入包和导入模块的不同
导入模块
我们先看代码的目录组织结构
下面的文件都在这个目录下 /opt/MyExercises/PythonExercises
这个目录下有两个文件
showadd.py和test.py
showadd的逻辑很简单,接受两个参数,把这两个参数的和相加,并显示这个相加的结果
test.py则是调用showadd模块来做这个事


showadd.py
# coding:utf-8
def showadd(x, y):
c = x + y
print c
return c
test.py
# coding:utf-8
import showadd
showadd.showadd(2, 3)
然后运行 python test.py
会看到显示结果是 5,正是test.py文件里传入的两个参数的相加的结果
导入包
对应前面说的导入包,我们需要在相应的目录下创建一个空文件名为__init__.py
我们先看下,如果我们不创建这个文件,会导致什么错误发生呢?
我们还是一样,先看下文件的组织结构
![文件组织结构][3]
我们看到,现在用一个目录容纳了showadd.py这个文件
我们看看没有在这个目录创建一个空的__init__.py,会有什么错误

我们看到,抛出了一个导入错误
那么,我们再在这个目录下,创建一个空的__init__.py文件看看

程序demo.py 文件内容
# coding:utf-8
from packagefortest.showadd import showadd
showadd(3, 4)
然后,我们再运行程序:
[root PythonExercises]# python demo.py
7
python的模块和包的更多相关文章
- Python之模块和包导入
Python之模块和包导入 模块导入: 1.创建名称空间,用来存放模块XX.py中定义的名字 2.基于创建的名称空间来执行XX.py. 3.创建名字XX.py指向该名称空间,XX.名字的操作,都是以X ...
- 一文搞懂 Python 的模块和包,在实战中的最佳实践
最近公司有个项目,我需要写个小爬虫,将爬取到的数据进行统计分析.首先确定用 Python 写,其次不想用 Scrapy,因为要爬取的数据量和频率都不高,没必要上爬虫框架.于是,就自己搭了一个项目,通过 ...
- python 深入模块和包
模块可以包含可执行语句以及函数的定义. 这些语句通常用于初始化模块. 它们只在 第一次 导入时执行.只在第一次导入的时候执行,第一次.妈蛋的第一次...后面再次导入就不执行了. [1](如果文件以脚本 ...
- (Python )模块、包
本节开始学习模块的相关知识,主要包括模块的编译,模块的搜索路径.包等知识 1.模块 如果我们直接在解释器中编写python,当我们关掉解释器后,再进去.我们之前编写的代码都丢失了.因此,我们需要将我们 ...
- Python 基金会 —— 模块和包简介
一.模块(Module) 1.模块的作用 在交互模式下输出的变量和函数定义,一旦终端重新启动后,这些定义就都不存在了,为了持久保存这些变量.函数等的定义,Python中引入了模块(Modul ...
- python基础-------模块与包(一)
模块与包 Python中的py文件我们拿来调用的为之模块:主要有内置模块(Python解释器自带),第三方模块(别的开发者开发的),自定义模块. 目前我们学习的是内置模块与第三方模块. 通过impor ...
- python中模块,包,库的概念
模块:就是.py文件,里面定义了一些函数和变量,需要的时候就可以导入这些模块. 包:在模块之上的概念,为了方便管理而将文件进行打包.包目录下第一个文件便是 __init__.py,然后是一些模块文件和 ...
- python的模块与包的导入
类似于C语言的包含头文件去引用其他文件的函数,python也有类似的机制,常用的引入方法有以下 import 模块名 #模块名就是py文件名 #使用这种方法以后调用函数的时候要使用模块名.函数名()这 ...
- day21 python之模块和包
一 模块 1 什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编 ...
- python之模块与包
一模块 二包 一模块 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代 ...
随机推荐
- webpack中hash与chunkhash区别和需要注意的问题
项目发布时,为了解决缓存,需要进行md5签名,这时候就需要用到 hash 和 chunkhash等. 问题一:hash问题 使用 hash 对js和css进行签名时,每一次hash值都不一样,导致无法 ...
- MySQL单表百万数据记录分页性能优化,转载
背景: 自己的一个网站,由于单表的数据记录高达了一百万条,造成数据访问很慢,Google分析的后台经常报告超时,尤其是页码大的页面更是慢的不行. 测试环境: 先让我们熟悉下基本的sql语句,来查看下我 ...
- Micropython TurnipBit 青少年入门编程 交通灯实验
不知道大家小时候对红绿灯的原理有什么研究过,我是农村的孩子直到初中才见到真实的红绿灯,当时我记得很清楚,在那个路口站了五六分钟就盯着红绿灯变换,搞不清原理,只觉得神奇.现在想来实在可笑,今天写这个的很 ...
- 漫谈PID——实现与调参
闲话: 作为一个控制专业的学生,说起PID,真是让我又爱又恨.甚至有时候会觉得我可能这辈子都学不会pid了,但是经过一段时间的反复琢磨,pid也不是很复杂.所以在看懂pid的基础上,写下这篇文章,方便 ...
- C++学习-2
副本机制 lambda不能取地址,无法当作函数指针 [1](2){3}(4)匿名lambda 1捕获列表 =只读 2后加mutable就可以修改副本 &读写 ...
- c++中使用xercesc对xml进行schema校验
头文件 #pragma once #if !defined(AFX_A1CONTENTHANDLER_H__E0CFBC18_CCC1_42F3_B0A4_B03331AB9693__INCLUDED ...
- 简单的同步Socket程序服务端
首先,Socket是.Net提供的 System.Net.Sockets命名空间的Scoket类为网络通信提供了一套丰富的方法和属性 服务器按照Socket的基本流程 先创建Socket 在用Bind ...
- WPF自学入门(九)WPF自定义窗口基类
今天简单记录一个知识点:WPF自定义窗口基类,常用winform的人知道,winform的窗体继承是很好用的,写一个基础窗体,直接在后台代码改写继承窗体名.但如果是WPF要继承窗体,我个人感觉没有理解 ...
- JDBC控制事务
概念 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit).事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并 ...
- Servlet的监听器
Listener是Servlet的监听器,它可以监听客户端的请求.服务端的操作等.通过监听器,可以自动激发一些操作,比如监听在线的用户的数量.当增加一个HttpSession时,就激发sessionC ...
