自定義模塊
什么是模塊:本質就是一個 .py 檔案,封裝陳述句的最小單位,
-
什么是自定義模塊:實際上就是定義 .py 檔案,
-
其中可以包括:變數定義,可執行陳述句,for回圈,函式定義等等,他們統稱模塊的成員
-
-
模塊的運行方式:
-
腳本方式:直接解釋器執行,或者pycharm中右鍵運行,
-
模塊方式:被其他的模塊匯入,為匯入它的模塊提供資源(函式定義,變數,類定義等,,)
-
-
自定義模塊被其他模塊匯入時,其中的可執行陳述句會立即執行,
-
python中提供了一種可以判斷自定義模塊是屬于腳本方式運行還是模塊方式運行,
-
腳本方式運行時
__name__變數是固定的字串__main__ -
以匯入方式運行時,
__name__就是本模塊的名字
-
-
-
系統匯入模塊的路徑
-
記憶體中:如果之前成功匯入過某個模塊,直接使用已經存在的模塊
-
內置路徑中:安裝路徑下-->Lib檔案下
-
sys.path:是一個模塊匯入路徑串列,動態修改sys.path就可匯入自定義模塊,
-
查看 sys.path 內容
import sys print(sys.path)
-
添加自定義模塊所在路徑到sys.path,就可以呼叫了,
-
使用相對位置找到自定義函式所在檔案夾
-
使用os模塊獲取一個路徑的父路徑,os.path.dirname(
__file__),通常用于獲取當前模塊的相對路徑
import os import sys # router是我需要呼叫的模塊所在的檔案 # __file__是當前檔案的絕對路徑 # 當前模塊的相對路徑加上被呼叫模塊的路徑,并添加到sys.path模塊呼叫路徑串列里 sys.path.append(os.path.dirname(__file__) +'/router')
-
-
-
-
測驗函式,在開發階段,對本模塊中的功能進行測驗
def main(): pass ? if __name__ == '__main__': main()
-
匯入模塊的多種方式:
-
import xxx:匯入一個 xxx 模塊的所有成員,
-
import aaa,bbb:一次性匯入多個模塊的成員(不建議這樣,不容易排錯)
-
from xxx import aaa:從 xxx 模塊匯入 aaa 成員
-
from xxx import aaa,bbb,ccc :從xxx模塊中匯入多個成員
-
from xxx import *:從xxx模塊中匯入所有成員,
-
-
import xxx 和 from xxx import * 的區別
-
import xxx
-
要想使用模塊成員時,必須把模塊名作為前綴,
import my_module my_module.func()
-
-
from xxx import * :默認情況下,所有成員被匯入,
-
要想使用模塊成員時,直接使用成員名即可,容易產生命名沖突,在后定義的成員生效(把前面的覆寫)
from my_module import func func()
-
怎么解決名稱沖突的問題
-
改用 import xxx 這種方式匯入,
-
自己避免使用同名
-
使用別名解決沖突:
-
-
針對匯入模塊的成員使用別名,避免沖突,
from my_module import func as f func = 100 print(f)
-
針對匯入的模塊使用別名,簡化書寫,
import my_module as f my_module = 100 print(my_module) print(f.func)
-
from xxx import * :默認情況下,所有成員被匯入
-
__all__是一個串列,用于表示本模塊可以被外界使用的成員,元素是成員名的字串,使用
__all__控制被匯入的成員,(只能針對from xxx import * 匯入方式)
__all__ = ['mod_0', 'mod_1'] # mod_0 和 mod_1 都不會被其他模塊匯入 func = '我的模塊' mod_0 = '不想被匯入' mod_1 = '不能被匯入'
-
-
-
-
相對匯入:
-
針對某個專案中的不同模塊之間進行匯入,稱為相對匯入,
-
只有一種格式:
-
相對路徑:包含點號的一個相對路徑,
-
一個點 . 表示當前路徑,
-
兩個點 . 表示的是父路徑,
-
三個點 . 表示的是父路徑的父路徑
-
-
在同一個檔案夾下的不同檔案夾中的模塊相互匯入
''' 此模塊名為yy.py 此模塊的父目錄為y檔案,也就是此模塊的當前目錄 y檔案的父目錄為xy檔案,也就是y檔案的當前目錄 xy檔案下有y檔案和x檔案 x檔案下有xx.py模塊 需要從此模塊匯入x檔案下的xx.py模塊 ''' from ..x.xx import * # 匯入當前模塊目錄的父目錄下的x檔案下的xx.py模塊的所有成員
-
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/279188.html
標籤:其他
上一篇:pandas(6):數學統計2
下一篇:呼叫運算子與可呼叫物件
