1、模塊python
定義:模塊就是實現了某個功能的代碼集合,一個模塊能夠定義函數,類和變量。模塊還能夠包括可運行的代碼。本質就是.py結尾的python文件。app
優勢:代碼重用,可維護性高函數
語法:ui
導入單一模塊:spa
1 import module_name
導入多個模塊code
import module_name1,module_name2,......
調用符號:對象
import sys print(sys.path)
模塊與文件關係:一個.py文件即一個模塊,反之亦然。blog
1 對於一個模塊test有以下定義: 2 3 模塊的文件名:test.py 4 模塊名:test 5 模塊導入:import test
2、模塊的名稱空間(做用域)作用域
定義:名稱空間就是一個從名稱到對象的關係映射,每一個模塊都定義了本身的名稱空間,即每一個模塊有本身獨立的做用域。pycharm
分類:python程序在運行時具備三個名稱空間,內建(__builtin__模塊),全局,局部,python解釋器先加載內建名稱空間,後加載全局名稱空間,最後加載局部名稱空間。
名稱空間與做用域關係:從內往外找,以較內層做用域爲準
例如
module_a.py
1 x=1 2 3 def test(): 4 print('from the module module_a')
module_b.py
1 x=2 2 3 def test(): 4 print('from the module module_b')
test.py
1 import module_a 2 import module_b 3 4 print(module_a.x) 5 print(module_b.x) 6 print(module_a.x+module_b.x) 7 module_a.test() 8 module_b.test() 9 10 運行結果: 11 1 12 2 13 3 14 from the module module_a 15 from the module module_b
例如
module_a.py
1 x=1 2 3 def test(): 4 print('from the module module_a',x)
test.py
1 import module_a 2 3 x=2 4 print(module_a.x) 5 module_a.x=10 6 print(module_a.x) 7 8 #運行結果 9 1 10 10
3、模塊的搜索路徑和路徑搜索
模塊導入須要經歷路徑搜索的過程,路徑搜索就是在你預約義的搜素路徑裏查找你想要導入的模塊
若是在預約義路徑爲找到,拋出異常(pycharm的特殊功能除外)
自定義模塊b在父級目錄裏(若有特殊須要可使用sys.path.insert()方法)
解決方式:將當前文件路徑父級目錄的父級目錄添加到sys.path裏
1 import sys,os 2 3 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) 4 5 import b 6 b.test()
4、from-import語句和as
from module_name import xxx as xxx_xx
5、包
定義:包就是一組模塊的集合。本質就是一個目錄(必須帶有一個__init__.py文件)
包與目錄的區別:包必須包含一個空文件(也能夠有內容)__init__
6、import原理
導入模塊的本質就是把python文件解釋一遍。
導入包的本質就是執行該包下的__init__.py文件。