11 python高階 中模組和包

2021-09-24 16:46:13 字數 2681 閱讀 9929

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...