模塊和包的概念
等同於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