1模塊和包的概念
當代碼越來越多時,當把所有的代碼都集中於一個文件中時,難以維護
將代碼分開放在不同的py文件中,易於維護,同一名字的變量和函數互不影響
如
1 #a.py 2 x=5 3 def f1(): 4 pass
1 #b.py 2 x='str' 3 def f1(iterable): 4 pass
a.py和b.py中變量和函數互不影響
將a.py稱為模塊a,將b.py稱為模塊b,可見,模塊的名字就是.py文件的名字
引入第三方的模塊
#test.py
import math
print math.pow(2,10)
當兩個不同的人寫的模塊名發生沖突時,將同名的模塊放入不同的包中即可避免這種沖突
如p1.util和p2.util就是兩個不同的模塊
調用時
#test.py 自身模塊名
import p1.util 引用p1.util模塊
print p1.util.f(2,10) 調用p1.util模塊的f函數
在文件系統中,包就是文件夾,模塊就是.py文件,同域名類似,包可以有多級
如何區分一個包和一個普通的目錄,在python中,包下面必須有一個__init__.py的文件,包的每一層目錄都必須有這樣文件,即使是空文件夾,只有這樣,python才會將這個目錄當作一個包來處理
2.python之導入模塊
要使用一個模塊,我們必須首先導入該模塊。Python使用import語句導入一個模塊。例如,導入系統自帶的模塊 math:
import math
你可以認為math就是一個指向已導入模塊的變量,通過該變量,我們可以訪問math模塊中所定義的所有公開的函數、變量和類:
>>> math.pow(2, 0.5) # pow是函數 1.4142135623730951 >>> math.pi # pi是變量 3.141592653589793
如果我們只希望導入用到的math模塊的某幾個函數,而不是所有函數,可以用下面的語句:
from math import pow, sin, log
這樣,可以直接引用 pow, sin, log 這3個函數,但math的其他函數沒有導入進來:
>>> pow(2, 10) 1024.0 >>> sin(3.14) 0.0015926529164868282
如果遇到名字沖突怎么辦?比如math模塊有一個log函數,logging模塊也有一個log函數,如果同時使用,如何解決名字沖突?
如果使用import導入模塊名,由於必須通過模塊名引用函數名,因此不存在沖突:
import math, logging print math.log(10) # 調用的是math的log函數 logging.log(10, 'something') # 調用的是logging的log函數
如果使用 from...import 導入 log 函數,勢必引起沖突。這時,可以給函數起個“別名”來避免沖突:
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. python中動態導入模塊
任務
利用import ... as ...,還可以動態導入不同名稱的模塊。
Python 2.6/2.7提供了json 模塊,但Python 2.5以及更早版本沒有json模塊,不過可以安裝一個simplejson模塊,這兩個模塊提供的函數簽名和功能都一模一樣。
試寫出導入json 模塊的代碼,能在Python 2.5/2.6/2.7都正常運行。
1 try: 2 import json 3 except ImportError: 4 import simplejson 5 print json.dumps({'python':2.7})
4. python之使用__future__
任務
在Python 3.x中,字符串統一為unicode,不需要加前綴 u,而以字節存儲的str則必須加前綴 b。請利用__future__的unicode_literals在Python 2.7中編寫unicode字符串。
#py2.7 from __future__ import unicode_literals s ='am I an unicode?' print isinstance(s, unicode)
5.安裝第三方模塊
python提供了兩種模塊管理工具
1.easy_install
2.pip(推薦,已經內置到python2.7.9以后的版本中)
在安裝過程中將python的安裝目錄設置到系統的環境變量path中
在cmd中即可打開python和使用pip的安裝第三方模塊
可以使用pip -h來獲取pip命令的使用方法
如下圖,使用pip工具安裝web.py庫
