模块和包的概念
等同于java中的Package
模块名=文件名(无后缀)
在文件系統中,包就是文件夾,模块就是xxx.py文件
每层包下面都有__init__.py文件
导入模块
>>> import math
>>> math.pow(2, 0.5)
>>> math.pi
精确导入函数、变量
>>>form math import pow, sin, log
>>> pow(2, 10)
>>> sin(3.14)
起別名
form logging import log as logger
判断是否为文件或目录
import os
print os.path.isdir(r'/data/input')
print os.path.isfile(r'/data/input/file1')
动态导入模块動態導入模塊
如果导入的模块不存在,Python解释器会报ImportError错误。
有的时候,两个不同的模块提供了相同的功能,比容StringIO和cStringIO都提供了StringIO这个功能。这是因为Python是动态语言,解释执行,因此Python代码运行速度慢。如果要提高Python代码的运行速度,最简单的方法是把某些关键函数有C语言重写,这样就能大大提高执行速度。
同样的功能,StringIO是纯Python代码编写的,而cStringIO部分函数是C编写的,因此cStringIO运行速度更快。
利用ImportError错误,可以动态导入模块:
try:
from cStringIO import StringIO
expect ImportError
from StringIO import StringIO
上述代码先尝试从cStringIO导入,如果失败了,再尝试从StringIO导入。
try的作用是捕获错误,并再捕获到指定错误时执行except语句。
使用__future__
Python的新版本会引入新的功能,但是,实际上这些功能在一个老版本中就已经存在了。要“试用”某一新的特性,就可以通过导入__future__模块的某些功能来实现。
例如:
Python 2.7中
>>> 10 / 3 #3
Python 3.x中
>>> 10 / 3 #3.33333333
>>> 10 // 3 #3
在2.7中引入3.x的除法规则:
>>> from __future__ import division
>>> 10 / 3 #3.33333333
当新版本的一个特性与旧版本不兼容时,该特性就会在旧版本中添加到__future__中,以便在旧版本中测试新的特性。
安裝第三方模块
Python的模块:內置的 第三方的
模块管理工具:-pip (推荐,已内置到Python2.7.9)
pip install 模块名 (pypi.python.org查找模块名)
例子:pip install web.py