Python模塊詳解以及import本質,獲得文件當前路徑os.path.abspath,獲得文件的父目錄os.path.dirname,放到系統變量的第一位sys.path.insert(0,x)
模塊介紹
1、定義:
模塊:用來從邏輯上組織python代碼(變量,函數,類,邏輯:實現一個功能),本質就是.py結尾的python文件(文件名:test.py,對應的模塊名:test)
包:用來從邏輯上組織模塊的,本質就是一個目錄(必須帶有一個__init__.py文件)
2、導入方法:
import module_name
引用腳本裏的函數用方法module_name.logger()
import module1_name,module2_name
導入多個腳本模塊
from module_alex import *
這裏相當於導入module_alex腳本文件裏的所有代碼
from module_alex import m1,m2,m3
from module_alex import logger as logger_alex
這裏相當於導入module_alex腳本裏的logger函數,並給它起別名為logger_alex,註意這裏的 logger不能寫成 logger()
用from的方法,這個想再引用module_alex裏的函數或者變量,直接logger()就OK了。如果有別名那麽直接執行logger_alex()
3、import本質(把模塊的所有代碼解釋了一遍,賦值給module_alex)
from module_alex import name的本質(把name這個代碼復制一份到當前腳本)
import本質(路徑搜索和搜索路徑)
導入模塊的本質就是把python文件解釋一遍,然後賦值給模塊名,(import test 相當於 test=‘test.py all code‘)
導入模塊的過程:找文件,找文件所在的路徑,找sys.path
所以 我們需要把當前腳本的絕對路徑的父父路徑,加到sys.path裏去,這樣就可以找到其他模塊。
所以我們引入一個新模塊os,os.path.abspath(__file__)可以獲得當前模塊的絕對路徑
然後再通過os.path.dirname可以獲取到除文件名以外的路徑,我們使用2次,就可以得到父父級目錄,現在我們獲得了父父級目錄,我們把目錄加到 sys.path去,但是我們註意我們需要把這個目錄放到列表sys.path的第一個位置去~!
導入包的本質就是執行該包下面的__init__.py文件
4、導入優化
Python模塊詳解以及import本質,獲得文件當前路徑os.path.abspath,獲得文件的父目錄os.path.dirname,放到系統變量的第一位sys.path.insert(0,x)