要使用乙個模組,我們必須首先匯入該模組。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
(三)python中動態匯入模組
如果匯入的模組不存在,python直譯器會報 importerror 錯誤:
import something
traceback (most recent call last):
file "", line 1, in
importerror: no module named something
有的時候,兩個不同的模組提供了相同的功能,比如 stringio 和 cstringio 都提供了stringio這個功能。
因為python是動態語言,解釋執行,因此python**執行速度慢。
如果要提高python**的執行速度,最簡單的方法是把某些關鍵函式用 c 語言重寫,這樣就能大大提高執行速度。
同樣的功能,stringio 是純python**編寫的,而 cstringio 部分函式是 c 寫的,因此 cstringio 執行速度更快。
利用importerror錯誤,我們經常在python中動態匯入模組:
try:
from cstringio import stringio
except importerror:
from stringio import stringio
上述**先嘗試從cstringio匯入,如果失敗了(比如cstringio沒有被安裝),再嘗試從stringio匯入。這樣,如果cstringio模組存在,則我們將獲得更快的執行速度,如果cstringio不存在,則頂多**執行速度會變慢,但不會影響**的正常執行。
try 的作用是捕獲錯誤,並在捕獲到指定錯誤時執行 except 語句。
模組匯入的呼叫
txt解釋模組 新建package時會有乙個init新檔案 pip安裝庫檔案當import匯入無效時 模組一共有三種 標準庫 第三方 自定義模組如何呼叫 import 1 執行對應檔案 2 引入變數名 import cal from cal import cal from day import ca...
python 匯入模組
最近開始學習python,遇到一些匯入模組的問題,花了幾分鐘終於琢磨明白了,給初學者介紹幾種型別 一 test sys test1 nv1.py nv2.py nv1.py 如下 classdog defadd self a,b self.a a self.b b c self.a self.b r...
python匯入模組
1 模組的定義 模組定義 用來邏輯上組織python 變數 函式 類 邏輯 目的是 實現乙個功能 本質就是.py結尾的python檔案。補充 包的定義 用來從邏輯組織模組的,本質就是乙個目錄 必須帶有乙個 init py檔案 2 匯入方法 匯入模組的方法 1.import module name 匯...