1.模組(module)
1.1 模組定義
通常模組為乙個.py檔案,其他可作為module的檔案型別還有".pyo"、".pyc"、".pyd"、".so"、".dll"。
module 可看作乙個工具類,可共用或者隱藏**細節,將相關**放置在乙個module以便讓**更好用、易懂,讓coder重點放在高層邏輯上。
module能定義函式、類、變數,也能包含可執行的**。
1.2 模組作用
1.大大提高了**的可維護性。
2.編寫**不必從零開始。當乙個模組編寫完畢,就可以被其他地方引用。我們在編寫程式的時候,也經常引用其他模組,包括python內建的模組和來自第三方的模組。
3.使用模組還可以避免函式名和變數名衝突。相同名字的函式和變數完全可以分別存在不同的模組中,因此,我們自己在編寫模組時,不必考慮名字會與其他模組衝突。但是也要注意,盡量不要與內建函式名字衝突。
1.3 模組**
①python內建的模組(標準庫)②第三方模組 ③自定義模組。
1.4 模組匯入本質
把引用的python檔案解釋一遍。
1.5 模組匯入方法
import module #引用乙個模組module
import module as md #
引用模組module,使用別名md。**中只能寫成md,不能寫module
import module1, module2 #
同時引用多個模組module1和module2
from module import logger #
僅引用module中的logger函式。**中可直接寫成logger,無需使用module.logger
from module import logger as frank #
引用module中的logger函式,使用別名frank。**中只能直接寫成frank,不能寫logger
1.6 模組匯入案例解析
1.6.1 import引入
模組可以包含可執行的語句和函式的定義,這些語句的目的是初始化模組,它們只在模組名第一次遇到匯入import語句時才執行,模組spam定義如下:
#spam.py
print('
from the spam.py')
money=1000
defread1():
print('
spam->read1->money
',money)
defread2():
print('
spam->read2 calling read')
read1()
defchange():
global
money
money=0
模組定義好後,我們可以使用 import語句來引入模組,語法如下:
import module1[, module2[,... modulen]
案例1:第一次引用spam模組時,可執行spam中語句。
import spam執行結果:
from the spam.py
案例2:模組間的同名函式或變數完全不衝突。
#測試money和spam.money不衝突(變數)
import
spam
money=10
(spam.money)
執行結果:
from
the spam.py
1000
#測試read1與spam.read1不衝突(函式)
import
spam
defread1():
print('
*****===')
spam.read1()
執行結果:
from
the spam.py
spam->read1->money 1000
#執行spam.change()操作的全域性變數money仍然是spam中的
import
spam
money=1spam.change()
(money)
執行結果:
from
the spam.py
1
案例3:為已經匯入的模組起別名的方式對編寫可擴充套件的**很有用
假設有兩個模組xmlreader.py和csvreader.py,它們都定義了函式read_data(filename):用來從檔案中讀取一些資料,但採用不同的輸入格式。可以編寫**來選擇性地挑選讀取模組,例如:
if file_format == 'xml'
:
import
xmlreader as reader #reader為模組別名
elif file_format == '
csv'
:
import
csvreader as reader #reader為模組別名
data=reader.read_date(filename)
案例4:在一行匯入多個模組
import sys,os,re
1.6.2 from..import..匯入
1.7 模組搜尋路徑
2. 包(package)
通常包總是乙個目錄,包目錄下為首的乙個檔案便是 __init__.py,然後是一些模組檔案和子目錄。假如子目錄中也有 __init__.py 那麼它就是這個包的子包。
可以使用import匯入包,或者from + import來匯入包中的部分模組。
3.import的特點
import語句是可以在程式中的任意位置使用。乙個程式中多次引用同乙個模組時,模組不會被重複匯入。
為了防止你重複匯入,python的優化手段是:第一次匯入後就將模組名載入到記憶體了,後續的import語句僅是對已經載入大記憶體中的模組物件增加了一次引用,不會重新執行模組內的import語句。
#檔案test1.py
import
test2
print test2.attr
#檔案test2.py
import
test1
attr = '
hello world
'
#檔案test.py
import test1
執行test.py,輸出結果為:hello world
說明:test.py中已經引用了test1,當檔案test2.py再次引用test1時,則忽略引用。
python3之模組及包的匯入
python 3.x可能是史上最詳解的【匯入(import)】
import的本質解析
python import詳解
python 包 模組匯入
os.getenv path 系統可執行程式位置 sys.path可匯入的python包位置 python module 的 path 屬性 可顯示每個包的檔案位置 what is pythonpath,what is python package what can we do with init ...
匯入模組 和 包
一 模組 模組一共三種 python標準庫 第三方模組 應用程式自定義模組 在cmd命令終端,檢視命令os 來自第三方 time模組來自第三方 模組兩種執行方式 1 用於啟動執行 2 用於被呼叫執行 key import module 將執行檔案 module 的目錄路徑插入到sys.path的第乙...
python深入之包和模組,包和模組的匯入方式
關於包和模組 2 包 是乙個有層級的目錄結構,包含n個模組或者n個子包,包中一定要有 init py檔案 3 庫 是完成一定功能的 集合,表現形式是乙個模組,或包 4 框架 是乙個架構層面的概念,為解決乙個開放性問題而設計的具有一定約束性的支撐結構,通過框架可以快速實現乙個解決問題的骨架,後面按照框...