自学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)  

二、内置模块(见下节)

自学Python6.1-模块简介的更多相关文章

  1. 自学Python5.1-模块简介

    模块简介 在C语言中如果要引用sqrt这个函数,必须用语句"#include<math.h>"引入math.h这个头文件,否则是无法正常进行调用的.那么在Python中 ...

  2. 自学Python6.2-类、模块、包

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  3. 自学Python6.3-内置模块(1)

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  4. 自学Python6.4-内置模块(2)

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  5. 自学Python6.5-内置模块(re、collections )

    自学Python之路-Python基础+模块+面向对象自学Python之路-Python网络编程自学Python之路-Python并发编程+数据库+前端自学Python之路-django 自学Pyth ...

  6. Python::OS 模块 -- 简介

    OS 模块简介 OS模块是Python标准库中的一个用于访问操作系统功能的模块,OS模块提供了一种可移植的方法使用操作系统的功能.使用OS模块中提供的接口,可以实现跨平台访问.但是在OS模块中的接口并 ...

  7. Qt5模块简介

        原文链接:Qt5 模块简介 无意中看到这篇文章,虽然讲的不是经常用的东西,但是看了这篇文章之后,可以对qt有个大致的了解,能够清晰的知道自己想要什么,应该关注那一部分,学习了,相信以后会又很大 ...

  8. Python 的 six模块简介

    Python 的 six模块简介 six : Six is a Python 2 and 3 compatibility library Six没有托管在Github上,而是托管在了Bitbucket ...

  9. signal模块简介

    signal模块简介 最近在看Linux signal 相关内容,signal可以被用来进程间通信和异步处理.Python标准库提供了signal包可以用来处理信号相关.这里讨论的是Unix系统中Py ...

随机推荐

  1. RDLC报表显示存储于数据库的图片

    图片以二进制存储于数据库表中.在显示RDLC报表时,把图片呈现出来. 好吧. 把存储过程写好: CREATE PROCEDURE [dbo].[usp_File_Select] AS SELECT [ ...

  2. ASP.NET Web API上实现 Web Socket - 转

    1. 什么是Web Socket Web Socket是Html5中引入的通信机制,它为浏览器与后台服务器之间提供了基于TCP的全双工的通信通道.用以替代以往的LongPooling等comet st ...

  3. Scala学习(五)练习

    Scala中的类&练习 1. 改进Counter类,让它不要在Int.MaxValue时变成负数 程序代码: class Counter { private var value=100 def ...

  4. hibernate 4 需要导入的jar包

    <!-- 下面是导入 hibernate 必须的 jar 包 --> <!-- https://mvnrepository.com/artifact/antlr/antlr --&g ...

  5. linux监控文件夹内的文件数量

    开发的时候遇到一个问题,服务器一旦重启,项目生成的文件就丢失了,感觉很莫名其妙..一开始猜测是文件流没有关闭,检查了代码,感觉没毛病.于是先看看是关机丢失了文件还是开机被删除了.下面的脚本每秒执行一次 ...

  6. 线程池ThreadPoolExecutor整理

    项目用到线程池,但是其实很多人对原理并不熟悉 ,这里只是整理一下 ThreadPoolExecutor java.uitl.concurrent.ThreadPoolExecutor类是线程池中最核心 ...

  7. 实例解析forEach、for...in与for...of

    在开发过程中经常需要循环遍历数组或者对象,js也为我们提供了不少方法供使用,其中就有三兄弟forEach.for...in.for...of,这三个方法应该是使用频率最高的,但很多人却一值傻傻分不清, ...

  8. WordPress更新提示无法创建目录的解决方案

    上一篇我们说到无法连接FTP服务器,我们已经完美的解决了,然后...发现...还是无法更新,啥情况??? 提示为无法创建目录 原因是执行更新程序的是www用户, 解决方案如下: 需要把插件或主程序下载 ...

  9. zabbix邮件报警功能的验证

    zabbix里面设置了很多监控项,有很多重要的监控预警,必须保证zabbix邮件报警功能正常,以确保那些告警信息能及时发送到运维人员的邮箱里. 所以需要每天8:30发一封确认zabbix邮件报警功能正 ...

  10. cometd简单用例

    准备工作 整个例子的源码下载:http://pan.baidu.com/s/1gfFYSbp 下载服务端jar文件 Comet4J目前仅支持Tomcat6.7版本,根据您所使用的Tomcat版本下载[ ...