自学Python5.1-模块简介
自学Python之路-Python基础+模块+面向对象
自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django
自学Python6.1-模块简介
在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则是无法正常进行调用的。
那么在Python中,如果要引用一些内置的函数,该怎么处理呢?在Python中有一个概念叫做模块(module),这个和C语言中的头文件以及Java中的包很类似
比如在Python中要调用sqrt函数,必须用import关键字引入math这个模块。
模块,用一砣代码实现了某个功能的代码集合。
类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。
而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。如:os 是系统相关的模块。
模块分为三种:
- 自定义模块
- 第三方模块(开源模块)
- 内置模块(标准库)
一 、自定义模块与第三方模块(开源模块)
1.1 如果你自己定义一个模块,想开源提供给他们使用,是一个开源模块的集散地 https://pypi.python.org/pypi 
1.2 如何安装第三方模块?
方式一:yum
pip (python专用)
apt-get
方式二:下载源码- 解压源码-进入目录-编译源码- 安装源码python setup.py install

1.3 自定义一个模块
举例,建设一个简单的web框架
①首先创建一个Python Package文件,而不是Directory , 区别是Python Package多了一个空的_init_.py空文件(包,该文件表示允许跨目录函数导入)

②在web 下面创建两个Package
Frontend 前端(页面相关的东西)
Backend 后端逻辑处理 程序之间关联度/依赖性降低,松耦合/解耦,因为这样才能几个人并行负责单独的模块,互相调用提高开发效率、代码复用、专业人士开发专用模块 只要接口一致数据库交互查询搜索更改增加等处理结果。


③ 配置文件 存数据库连接信息相关、html代码(全局)

在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。
比如有这样一个文件test.py,在test.py中定义了函数add:
#test.py
def add(a,b):
return a+b
那么在其他文件中就可以先import test,然后通过test.add(a,b)来调用了,当然也可以通过from test import add来引入。
1.4 模块的导入
①将模块放置在同一级内
②通过路径添加
在Python中用关键字import来引入某个模块,比如要引用模块math,就可以在文件最开始的地方用import math来引入。在调用math模块中的函数时,必须这样引用:
模块名.函数名
import math
print sqrt(2) #这样会报错
print math.sqrt(2) #这样才能正确输出结果
注释:为什么必须加上模块名这样调用呢?因为可能存在这样一种情况:在多个模块中含有相同名称的函数,此时如果只是通过函数名来调用,解释器无法知道到底要调用哪个函数。所以如果像上述这样引入模块的时候,调用函数必须加上模块名。
导入模块有一下几种方法:
import module
from module.xx.xx import xx
from module.xx.xx import xx as rename
from module.xx.xx import *
导入模块其实就是告诉Python解释器去解释那个py文件
- 导入一个py文件,解释器解释该py文件
- 导入一个包,解释器解释该包下的 __init__.py 文件 【py2.7】
模块导入的路径
sys.path
import sys
print (sys.path)
输出:
['D:\\PyCharm Community Edition 2016.3.2', 'D:\\PyCharm Community Edition 2016.3.2', 'C:\\Users\\carlos.jiang\\AppData\\Local\\Programs\\Python\\Python36-32\\python36.zip', 'C:\\Users\\carlos.jiang\\AppData\\Local\\Programs\\Python\\Python36-32\\DLLs', 'C:\\Users\\carlos.jiang\\AppData\\Local\\Programs\\Python\\Python36-32\\lib', 'C:\\Users\\carlos.jiang\\AppData\\Local\\Programs\\Python\\Python36-32', 'C:\\Users\\carlos\\AppData\\Local\\Programs\\Python\\Python36-32\\lib\\site-packages']
安装的路径可能会有些不同,但是site-packages目录是最佳选择,故只要将模块放入site-packages这样的目录中,所有程序就都能将其导入了。
如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append('路径') 添加。
import sys
import os
project_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(project_path)
二、内置模块(见下节)
自学Python5.1-模块简介的更多相关文章
- 自学Python5.1-面向对象与面向过程
自学Python之路 自学Python5.1-面向对象与面向过程 面向过程:根据业务逻辑从上到下写代码. 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开 ...
- 自学Python6.1-模块简介
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- 自学Python5.7-面向对象三大基本特征_封装
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- 自学Python5.6-面向对象三大基本特征_多态
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- 自学Python5.5-面向对象三大基本特征_继承
自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...
- Python::OS 模块 -- 简介
OS 模块简介 OS模块是Python标准库中的一个用于访问操作系统功能的模块,OS模块提供了一种可移植的方法使用操作系统的功能.使用OS模块中提供的接口,可以实现跨平台访问.但是在OS模块中的接口并 ...
- Qt5模块简介
原文链接:Qt5 模块简介 无意中看到这篇文章,虽然讲的不是经常用的东西,但是看了这篇文章之后,可以对qt有个大致的了解,能够清晰的知道自己想要什么,应该关注那一部分,学习了,相信以后会又很大 ...
- 自学Python5.2-类和对象概念
自学Python之路 自学Python5.2-类和对象概念 面向对象编程的2个非常重要的概念:类和对象 对象是面向对象编程的核心: 在使用对象的过程中,为了将具有共同特征和行为的一组对象抽象定义,提出 ...
- 自学Python5.3-类和对象的简单操作
自学Python之路 自学Python5.3-类和对象的简单操作 1. 定义一个类 定义一个类的格式如下: class 类名: 方法列表 举例1 : class Cat: #定义一个Cat类 #属性 ...
随机推荐
- EF错误
The model backing the 'XXXXDBContext' context has changed since the database was created. Either man ...
- Nodejs前端服务器压缩图片
Nodejs作为前端服务器,自然能承担处理图片的能力, 使用GM for nodejs 作为图片处理器,调用ImageMagick处理图片 使用ImageMagick var imageMagick ...
- NodeJS 常用模块积累
cluster&forever cluster & forever 虽然 nodejs 原生已经提供了 cluster 模块,大部分情况下可以满足我们的基本需求,但这两个模块 clus ...
- python 有关datetime时间日期 以及时间戳转换
直接上代码 其中有注释 #coding=utf-8 import time import datetime def yes_time(): #获取当前时间 now_time = datetime.da ...
- 阿里Dubbo疯狂更新,关Spring Cloud什么事?
最近,开源社区发生了一件大事,那个全国 Java 开发者使用最广的开源服务框架 Dubbo 低调重启维护,并且 3 个月连续发布了 4 个维护版本. 我上次在写放弃Dubbo,选择最流行的Spring ...
- Kotlin实现LeetCode算法题之Median of Two Sorted Arrays
题目Median of Two Sorted Arrays(难度Hard) 方案1,数组合并&排序调用Java方法 import java.util.* class Solution { fu ...
- 关于web程序中使用KindEditor向数据库插入带有格式的数据时出现的问题
最近做一个项目,需要对输入的文字在存入数据库之前进行文本格式编辑,于是我用到了KindEditor,当然怎么用在asp.net页面中,这里就不过多叙述了. 主要是遇到在将赋予格式的文本插入数据库时遇到 ...
- python从2.7升级到3.5 需要主要的问题
今天鼓足勇气把我们python从2.7升级到3.5.我用的是pycharm开发工具.升级过程遇到一些问题小结下: 1.右击项目: 找到左侧 project interpreter选项,配置项目开发环境 ...
- (转载)java 枚举 循环遍历以及一些简单常见的使用
本文转载自:http://blog.csdn.net/qq_27093465/article/details/51706076 作者:李学凯 什么时候想用枚举类型: 有时候,在设计一个java mod ...
- 预防onion比特币勒索病毒,如何快速关闭135,137,138,139,445端口
预防onion比特币勒索病毒,如何快速关闭135,137,138,139,445等端口 如果这种网络端口关闭方法行不通,可以尝试一种新的关闭网络端口方法(比较繁琐)见106楼,补丁安装教程见126 ...