3 動態匯入模組
4、python之使用__future__
5、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
)
from logging import log as logger
如果匯入的模組不存在,python直譯器會報 importerror 錯誤:
利用importerror錯誤,我們經常在python中動態匯入模組:
try
:from cstringio import stringio
except importerror:
from stringio import stringio
try:
import json
except importerror:
import ******json as json
print json.dumps(
)
上述** 1)先嘗試從cstringio匯入,如果失敗了(比如cstringio沒有被安裝),再嘗試從stringio匯入。這樣,如果cstringio模組存在,則我們將獲得更快的執行速度,如果cstringio不存在,則頂多**執行速度會變慢,但不會影響**的正常執行。2)python 2.6/2.7提供了json 模組,但python 2.5以及更早版本沒有json模組,不過可以安裝乙個******json模組,這兩個模組提供的函式簽名和功能都一模一樣。
try 的作用是捕獲錯誤,並在捕獲到指定錯誤時執行 except 語句。
python的新版本會引入新的功能,但是,實際上這些功能在上乙個老版本中就已經存在了。要「試用」某一新的特性,就可以通過匯入__future__模組的某些功能來實現
當新版本的乙個特性與舊版本不相容時,該特性將會在舊版本中新增到__future__中,以便舊的**能在舊版本中測試新特性。
>>
>10/
33
但是,python 3.x已經改進了整數的除法運算,「/」除將得到浮點數,「//」除才仍是整數:
>>
>10/
33.3333333333333335
>>
>
10//
33
要在python 2.7中引入3.x的除法規則,匯入__future__的division:
>>
>
from __future__ import division
>>
>
print10/
33.3333333333333335
在python 3.x中,字串統一為unicode,不需要加字首 u,而以位元組儲存的str則必須加字首 b。請利用__future__的unicode_literals在python 2.7中編寫unicode字串。
from __future__ import unicode_literals
s ='am i an unicode?'
print
isinstance
(s,unicode
)
pip安 11 Python 檔案和流
1 開啟檔案 open name mode buffering open函式使用乙個檔名作為其唯一的乙個強制引數,然後返回乙個檔案物件。模式 mode 和緩衝區 buffering 是可選的。模式 r 讀模式 w 寫模式 a 追加模式 b 二進位制模式,新增到其他模式中使用 讀 寫模式,新增到其他模...
高階python 包 和模組
包 簡單而言,包就是資料夾,用來存放檔案。模組 檔案或檔案的集合 python中 和is 的區別 主要 判斷的是兩個變數的值 is 用來判斷兩個變數的記憶體位址 引用傳遞僅僅是資料的引用 is 主要 呼叫的是的是 ip位址 深淺拷貝 1 匯入 copy import copy b copy。copy...
Python高階二 模組和包
同名模組 放入不同包中 import package1.file1 如何區分包和普通目錄 包下面有乙個 init py檔案 匯入模組 from package import file1 或者 import package.file from os import path print path.isd...