模塊和包

一模塊

一個模塊就是包含了python定義和聲明的文件,建立一個py文件,給它起一個符合變量名規則的名字,這個名字就是模塊名.python

模塊的使用

import my_module

import 模塊的命名空間和當前文件不在同一命名空間中,且模塊不能夠重複導入,這是由於,模塊的導入過程當中會先判斷這個模塊是否導入過,是則引用,不然建立一個屬於這個模塊的命名空間,讓模塊名指向這個命名空間,而後才執行模塊中的代碼.當導入多個模塊時,要一個一個的導入,且按照自定義模塊,第三方模塊,內置模塊的順序導入.app

導入的模塊中的變量名會被當前文件中的一樣變量名覆蓋測試

import my_module  #import導入模塊

import sys
print(sys.modules)   #判斷模塊是否已經導入

from ...  import ...

導入模塊中本身想使用的變量名,且沒有沒被import的名字不可用spa

from my_module import func #導入my_module模塊中的func

from my_module import func1,func2 #導入多個名字

from my_module import func as f #爲導入的名字起別名,支持多個,且起別名後,import後的名字將不可用

from my_module import * #等同於import my_module,_開頭的名字除外 ,__all__=['money','read1']  能夠約束*中變量內容

 

 模塊的加載與修改

模塊運行後,再修改模塊中的內容不會將修改後的內容顯示到當前運行結果中code

import importlib
importlib.reload(my_module)   #用importlib模塊後能夠實現實時修改

 

但這種狀況只能用在測試環境中blog

把模塊當腳本使用

直接運行py文件那麼這個py文件就是以腳本運行的,此時能獨立提供一個功能,且__name__ = "__main__" it

如果先導入這個文件,就是一個模塊,此時是一個可以被調用的功能,不能自主完成交互,且__name__ = "模塊的名字"class

添加模塊路徑

import sys
path = r'D:\路徑'
sys.path.append(path)

 

文件夾中含有__init__.py文件則稱爲包,導入包的實質就是導入__init__.py文件.包是模塊的一種形式,包是爲用來導入的import

注意導入的文件中帶有.就是導入包的標誌變量

絕對導入

在執行一個py腳本的時候,這個腳本以及和這個腳本同級的模塊中只能用絕對導入
缺點:
全部的導入都要從一個根目錄下日後解釋文件夾之間的關係
若是當前導入包的文件和被導入的包的位置關係發生了變化,那麼全部的init文件都要作相應的調整

 

相對導入

不須要去反覆的修改路徑只要一個包中的全部文件夾和文件的相對位置不發生改變也不須要去關心當前這個包和被執行的文件之間的層級關係
缺點:
含有相對導入的py文件不能被直接執行
必須放在包中被導入的調用才能正常的使用
相關文章
相關標籤/搜索