Python之模組與包

2022-08-17 20:30:31 字數 2894 閱讀 1103

通常:乙個模組就是乙個包含了python定義和宣告的檔案(檔名就是模組名字加上.py的字尾),模組可以被匯入使用。

但import載入的模組分為四個通用類別:

1.使用python編寫的.py檔案

2.已被編譯為共享庫或dll的c或c++擴充套件

3.把一系列模組組織到一起的資料夾(注:資料夾下有乙個__init__.py檔案,改資料夾稱之為包)

4.使用c編寫並鏈結到python直譯器的內建模組

為什麼使用模組:

1.如果你退出python直譯器然後重新進入,那麼你之前定義的函式或者變數都將丟失,因此我們通常將程式寫到檔案中以便永久儲存下來,需要時就通過python test.py方式去執行,此時test.py被稱為指令碼script

2.隨著程式的發展,功能越來越多,為了方便管理,我們通常將程式分成乙個個的檔案,這樣做程式的結構更清晰,方便管理。這時我們不僅僅可以把這些檔案當做指令碼去執行,還可以把他們當做模組來匯入到其他的模組中,實現了功能的重複利用

#

import匯入檔案都做了哪些事

#1.為原始檔建立新的名詞空間

#2.在新建的命名空間中執行模組中包含的**

#3.建立名字來引用該命名空間

#為模組起別名

engine_type='

mysql

'if engine_type=='

mysql':

import

mysql as engine

elif engine_type=='

oracle':

import

oracle as engine

engine.parse()

#在一行匯入多個模組

import spam,time

from spam import money

from span import *

# * 先找模組檔案下的 __all__=['','']

#如果有__all__就使用__all__中的可被呼叫物件,否則模組內物件都可被使用

使用from...import...則是將spam中的名字直接匯入到當前的命名空間中,所以在當前命名空間中,直接使用名字就可以了、無需加字首:spam.

直接從sys.module中刪除乙個模組不就可以解除安裝了嗎,注意了,刪了sys.module中的模組物件仍然可能被其他程式的元件所引用,因而不會被清楚。

特別的對於我們引用了這個模組中的乙個類,用這個類產生了很多物件,因而這些物件都有關於這個模組的引用。

如果只是想互動測試的乙個模組,使用import importlib; importlib.reload(modulename),這只能用於測試環境

print(__name__) #

檔案當做指令碼執行,該值等於__main__;檔案spam.py當做模組被匯入時,該值被當做spam

if__name__=='

__main__':

read1()

read2()

change()

#

模組的查詢順序:記憶體已經載入的模組->內建模組->sys.path路徑中包含的模組

import

sys#將模組的位址放在環境變數裡

'c:\users\htz\pycharmprojects\s19\day5\a')

import

mfrom a import m

#官方解釋

packages are a way of structuring python』s module namespace by using 「dotted module names」

包是一種通過使用『.模組名』來組織python模組命名空間的方式

#具體:包就是乙個包含有__init__.py檔案的資料夾,所以建立包的目的是將檔案/模組組織起來

#強調:

1. 在python3中,即使包下沒有__init__.py檔案,import 包仍然不會報錯,而在python2中,包下一定要有該檔案,否則import 包報錯

2. 建立包的目的不是為了執行,而是被匯入使用,記住,包只是模組的一種形式而已,包的本質就是一種模組

#注意事項:

1.關於包相關的匯入語句也分為import和from ... import ...兩種,但是無論哪種,無論在什麼位置,在匯入時都必須遵循乙個原則:凡是在匯入時帶點的,點的左邊都必須是乙個包,否則非法。可以帶有一連串的點,如item.subitem.subsubitem,但都必須遵循這個原則。但對於匯入後,在使用時就沒有這種限制了,點的左邊可以是包,模組,函式,類(它們都可以用點的方式呼叫自己的屬性)。

2、import匯入檔案時,產生命名空間中的名字**於檔案,import 包,產生的命名空間的名字同樣**於檔案,即包下的__init__.py,匯入包本質就是在匯入該檔案

#

匯入包實際上就是在匯入包下面的__init__.py檔案

import

aaa#

點的左邊必須是包,from...import...後面必須是乙個明確的名字

from aaa.m1 import f1

from aaa import bbb

from aaa.bbb.m3 import f3

#相對匯入: '.'當前檔案;'..'上級檔案

設定環境變數的乙個方法(django)

__file__))))

Python之模組與包

a 在 python 中,乙個.py檔案就稱之為乙個模組 module 大大提高了 的可維護性 編寫 不必從零開始。當乙個模組編寫完畢,就可以被其他地方引用 b 呼叫函式時用import a getpass模組提供了可移植的密碼輸入 import getpass getpass.getpass b ...

Python之模組與包

模組匯入過程 0.先判斷sys.modules字典中檢視模組是否已經存在,如存在則不做任何操作 1.從sys.path路徑下找到模組 2.建立模組的命名空間 3.把檔案中的名字都放到這個命名空間裡 import sys print sys.path import modue1 import只匯入一次...

python之模組與包

包是一種通過使用模組名來組織python模組命名空間的方式 無論是import形式還是from.import形式,凡是在匯入語句中 而不是在使用時 遇到帶點的,都要第一時間提高警覺 這是關於包才有的匯入語法 包的本質就是乙個包含 init py檔案的目錄 凡是在匯入時帶點的,點的左邊都必須是乙個包 ...