python進階-- 02 如何使用模塊
1.模塊與包的概念
1.1概念
模塊:代碼多了之後,放在一個.py文件中不易維護,將代碼拆分到多個.py文件中,每個.py文件就是一個模塊。
包:模塊多了之後,也容易重名,將每個開發開發的模塊可以放到不同的包中,引用的時候使用包名.模塊名。
1.2優勢
同一變量名的變量在不同模塊中互不影響
同一模塊名的模塊在不同包中互不影響
1.3引用舉例
# p1->包名,util->模塊名
>>> import p1.util
>>> print p1.util.f(2,10)
1.4如何區分包和普通文件夾
在文件系統中,一個包就是一個文件夾;
在python中,每一個包的下面必須要有一個__init__.py
__init__.py文件即使是空的,也要有。
2.模塊的導入
2.1直接import
import math
>>> math.pow(2, 0.5) # pow是函數
1.4142135623730951
>>> math.pi # pi是變量
3.141592653589793
2.2使用from ... import xxx
from math import pow, sin, log
>>> pow(2, 10)
1024.0
>>> sin(3.14)
0.0015926529164868282
2.3導入的模塊中的方法/變量沖突問題
直接import的不會有沖突問題
使用from ... import xxx的如果有沖突,可以使用別名的方式
from math import log
from logging import log as logger # logging的log現在變成了logger
print log(10) # 調用的是math的log
logger(10, ‘import from logging‘) # 調用的是logging的log
3.動態導入模塊
3.1背景
如果導入的模塊不存在,Python解釋器會報 ImportError 錯誤;
有的時候,兩個不同的模塊提供了相同的功能
3.2原理
利用ImportError錯誤,通過異常處理try-except,我們可以實現動態導入模塊
另,import xxx as xxx可以動態導入相同名稱的模塊為不同的使用名稱
3.3舉例
try:
from cStringIO import StringIO
except ImportError:
from StringIO import StringIO
或
try:
import simplejson as json
except ImportError:
import json
4.__future__試用新特性
4.1背景
Python的新版本會引入新的功能,但是,實際上這些功能在上一個老版本中就已經存在了。要“試用”某一新的特性,就可以通過導入__future__模塊的某些功能來實現。
4.2舉例
# Python 2.7的整數除法運算結果是整數,Python 3.x已經改進了整數的除法運算,“/”除將得到浮點數,“//”除才仍是整數
>>> print 10/3
3
>>> from __future__ import division
>>> print 10/3
3.33333333333
# 在Python 3.x中,字符串統一為unicode,不需要加前綴 u,而以字節存儲的str則必須加前綴 b
>>> from __future__ import unicode_literals
>>> s = ‘am I an unicode?‘
>>> print isinstance(s, unicode)
True
5.安裝第三方模塊
5.1easy_install
5.2 python內置的pip(已經內置到2.7.9)
安裝時候選擇pip功能
安裝完成後,即可在命令行使用pip install web.py來安裝web.py這個第三方模塊
第三方模塊安裝完成後,使用import web即可正常使用
第三方模塊尋找:https://pypi.python.org/pypi
5.3python第三方模塊
http://www.cnblogs.com/mmbbflyer/p/5787494.html
http://www.cnblogs.com/tester-l/p/5735230.html
python進階-- 02 如何使用模塊