Python包 模組和包匯入詳解(import)

2022-08-24 17:09:13 字數 3771 閱讀 6578

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

print

(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()

print

(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 框架 是乙個架構層面的概念,為解決乙個開放性問題而設計的具有一定約束性的支撐結構,通過框架可以快速實現乙個解決問題的骨架,後面按照框...