模块,用一砣代码实现了某个功能的代码集合。

有两种存在的方式

1.写到一个文件夹里面

2.py文件

类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。

如:os 是系统相关的模块;file是文件操作相关的模块

模块分为三种:

  • 自定义模块
  • 内置模块
  • 开源模块

自定义模块

1、定义模块

2、导入模块

Python之所以应用越来越广泛,在一定程度上也依赖于其为程序员提供了大量的模块以供使用,如果想要使用模块,则需要导入。导入模块有一下几种方法:

 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 文件

那么问题来了,导入模块时是根据那个路径作为基准来进行的呢?即:sys.path

import sys
print sys.path 结果:默认路径就是一个列表。
['/Users/wupeiqi/PycharmProjects/calculator/p1/pp1', '/usr/local/lib/python2.7/site-packages/setuptools-15.2-py2.7.egg', '/usr/local/lib/python2.7/site-packages/distribute-0.6.28-py2.7.egg', '/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4b4-py2.7-macosx-10.10-x86_64.egg', '/usr/local/lib/python2.7/site-packages/xlutils-1.7.1-py2.7.egg', '/usr/local/lib/python2.7/site-packages/xlwt-1.0.0-py2.7.egg', '/usr/local/lib/python2.7/site-packages/xlrd-0.9.3-py2.7.egg', '/usr/local/lib/python2.7/site-packages/tornado-4.1-py2.7-macosx-10.10-x86_64.egg', '/usr/local/lib/python2.7/site-packages/backports.ssl_match_hostname-3.4.0.2-py2.7.egg', '/usr/local/lib/python2.7/site-packages/certifi-2015.4.28-py2.7.egg', '/usr/local/lib/python2.7/site-packages/pyOpenSSL-0.15.1-py2.7.egg', '/usr/local/lib/python2.7/site-packages/six-1.9.0-py2.7.egg', '/usr/local/lib/python2.7/site-packages/cryptography-0.9.1-py2.7-macosx-10.10-x86_64.egg', '/usr/local/lib/python2.7/site-packages/cffi-1.1.1-py2.7-macosx-10.10-x86_64.egg', '/usr/local/lib/python2.7/site-packages/ipaddress-1.0.7-py2.7.egg', '/usr/local/lib/python2.7/site-packages/enum34-1.0.4-py2.7.egg', '/usr/local/lib/python2.7/site-packages/pyasn1-0.1.7-py2.7.egg', '/usr/local/lib/python2.7/site-packages/idna-2.0-py2.7.egg', '/usr/local/lib/python2.7/site-packages/pycparser-2.13-py2.7.egg', '/usr/local/lib/python2.7/site-packages/Django-1.7.8-py2.7.egg', '/usr/local/lib/python2.7/site-packages/paramiko-1.10.1-py2.7.egg', '/usr/local/lib/python2.7/site-packages/gevent-1.0.2-py2.7-macosx-10.10-x86_64.egg', '/usr/local/lib/python2.7/site-packages/greenlet-0.4.7-py2.7-macosx-10.10-x86_64.egg', '/Users/wupeiqi/PycharmProjects/calculator', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python27.zip', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-darwin', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/plat-mac/lib-scriptpackages', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-tk', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-old', '/usr/local/Cellar/python/2.7.9/Frameworks/Python.framework/Versions/2.7/lib/python2.7/lib-dynload', '/usr/local/lib/python2.7/site-packages', '/Library/Python/2.7/site-packages']

如果sys.path路径列表没有你想要的路径,可以通过 sys.path.append('路径') 添加。(要执行哪个文件,python会自动添加这个文件所在的文件夹到模块的路径中)
通过os模块可以获取各种目录,例如:

 import sys
import os pre_path = os.path.abspath('../')
sys.path.append(pre_path)

__init__是一个特殊的文件,他会默认解释一个文件夹,(一个模块下必须要有一个__init__文件,这样才叫一个包,可以被导入)

导入一个包的话,他会被解释器解释。

开源模块

一、下载安装

下载安装有两种方式:

1
yum
pip
apt-get 2
下载源码
解压源码
进入目录
编译源码 python setup.py build
安装源码 python setup.py install

最新文章

  1. N久没写过东西了..写个最近在研究的程序
  2. Java白皮书的关键术语
  3. HTML5-列表的使用
  4. 【STL源码学习】STL算法学习之二
  5. Cordova VS React Native 谁是未来? - b
  6. Qt实现不同Treewidget之间拖拽
  7. PHP大批量插入mysql数据库的优化
  8. ACM HDU Bone Collector 01背包
  9. [Android]聊聊ActionMode
  10. 【LeetCode每天一题】Plus One(加一)
  11. 使用 $(function(){}) 时遇到的一个小bug及解决方法
  12. java第十三周测试记录
  13. 2017-2018-2 20155309 南皓芯 Exp5 MSF基础应用
  14. libuv示例代码
  15. [network] IPVS / Load balancer / Linux Virtual Server
  16. 如何调节tomcat初始内存
  17. jaxb 组装及解析xml
  18. oracle之rman备份
  19. WPF加载HTML、WPF与JavaScript交互
  20. redis 基本数据类型-列表(List)

热门文章

  1. node代码片段
  2. 监控平台项目之CSS总结——基于angularjs、bootstrap、jquery等框架
  3. Android Studio tips2
  4. 【转】解决IIS7该问.svc文件的错误问题
  5. 写了cookie阻止通过输入地址直接访问下一个html,但是直接输入地址访问时,会闪一下下一个页面,怎么回事啊????、
  6. MFC 不让程序显示在任务栏上
  7. 关于GC的几篇文章
  8. SQL中EXISTS怎么用[转]
  9. [题解]codevs1001 舒适的路线
  10. VueJS取得URL参数