Python中的模块和包:模块的(动态)导入、__future__模块使用
包的作用
不同的開發(fā)人員寫了相同名字的模塊,可以將同名的模塊放入不同的包中進(jìn)行管理。引用一個完整的模塊代碼如下:
import sqz.util在文件系統(tǒng)當(dāng)中,包就是一個文件夾,而模塊是一個.py文件。包可以有多級,嵌套多個文件夾,每一級文件夾中必須有一個__init__.py文件。
Python 中模塊的導(dǎo)入
導(dǎo)入系統(tǒng)中自帶模塊math,并訪問函數(shù)pow():
import math math.pow(2,3)直接導(dǎo)入模塊中所需要的函數(shù)名,避免通過模塊.函數(shù)名來調(diào)用。
from math import sin, pow, log pow(2, 3) # 直接通過函數(shù)名調(diào)用為導(dǎo)入的函數(shù)取別名,避免不同模塊導(dǎo)入的函數(shù)同名產(chǎn)生沖突。
from math import log from logging import log as loggerlog(10) # 等同于math.log(10) logger(10, 'from logging') # 等同于logging.log(10, 'from logging')動態(tài)導(dǎo)入模塊
有的時候,兩個不同的模塊提供了相同的功能,比如 StringIO 和 cStringIO 都提供了StringIO這個功能。這是因為Python是動態(tài)語言,解釋執(zhí)行,因此Python代碼運行速度慢。如果要提高Python代碼的運行速度,最簡單的方法是把某些關(guān)鍵函數(shù)用 C 語言重寫,這樣就能大大提高執(zhí)行速度。同樣的功能,StringIO 是純Python代碼編寫的,而 cStringIO 部分函數(shù)是 C 寫的,因此 cStringIO 運行速度更快。
try:from cStringIO import StringIO # 使用try語句捕獲異常 except ImportError:from StringIO import StringIO上述代碼先嘗試從cStringIO導(dǎo)入,如果失敗了(比如cStringIO沒有被安裝),再嘗試從StringIO導(dǎo)入。這樣,如果cStringIO模塊存在,則我們將獲得更快的運行速度,如果cStringIO不存在,則頂多代碼運行速度會變慢,但不會影響代碼的正常執(zhí)行。
try 的作用是捕獲錯誤,并在捕獲到指定錯誤時執(zhí)行 except 語句。
Python中使用 __future__
Python的新版本會引入新的功能,但是,實際上這些功能在上一個老版本中就已經(jīng)存在了。要“試用”某一新的特性,就可以通過導(dǎo)入__future__模塊的某些功能來實現(xiàn)。
要在Python 2.7中引入3.x的除法規(guī)則,導(dǎo)入__future__的division:
from __futrue__ import division print(10/3) # python2.7中是整除除法,結(jié)果為3。引入__futrue__新版本中除法后,'/'得到浮點數(shù)總結(jié)
以上是生活随笔為你收集整理的Python中的模块和包:模块的(动态)导入、__future__模块使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 中的闭包、匿名函数、dec
- 下一篇: 炽蓝仙野摇篮怎么获得