python?自定義包的實(shí)現(xiàn)示例
1. 代碼目錄
創(chuàng)建自定義包的時(shí)候,原理是當(dāng) python
檢測(cè)到一個(gè)目錄下存在 __init__.py
文件時(shí),python
就會(huì)把它當(dāng)成一個(gè)模塊(module
)。
下面這個(gè)例子是網(wǎng)上整理的代碼,但是有些小改動(dòng),可以直接拿來(lái)就用。
看代碼結(jié)構(gòu):
2. 每個(gè)目錄的代碼
parent 主目錄
main.py
import sys # 這一行需要放在最前面,也是最關(guān)鍵 # 將包含parent包的路徑添加進(jìn)系統(tǒng)路徑 sys.path.append(r"..") print('-----開(kāi)始import-----\n') import parent.pack2.mod2_1 # 第1種 引用方法 import parent.pack2.mod2_2 as p2m2 # 第2種 引用方法 from parent.pack.mod import * # 第3種 引用方法 if __name__ == '__main__': print('-----開(kāi)始main-----\n') # 第1種 引用的調(diào)用方法 parent.pack2.mod2_1.func() # 第2種 引用的調(diào)用方法 p2m2.func() # 第3種 引用的調(diào)用方法 func() # import 就會(huì)把注冊(cè)在包 __init__.py 文件中 __all__ 列表中的子模塊和子包導(dǎo)入到當(dāng)前作用域中 print('\npack2包中的模塊有:') print(parent.pack2.__all__)
__init__.py
if __name__ == '__main__': print('parent 作為主程序運(yùn)行') else: print('parent 初始化')
pack 包
a. __init__.py
if __name__ == '__main__': print('作為主程序運(yùn)行') else: print('Pack初始化')
b. config.py
run = 9999
c. mod.py
# mod def func(): print('pack.mod.func()') if __name__ == '__main__': print('mod 作為主程序運(yùn)行') else: print('mod 被另一個(gè)模塊調(diào)用')
pack2 包
a. __init__.py
# Pack2 的 __init__.py # __all__ 用于當(dāng)前Pack2包是所包含的模塊 __all__ = ["mod2_1", "mod2_2", "mod2_3"] if __name__ == '__main__': print('Pack2作為主程序運(yùn)行') else: print('Pack2初始化')
b. mod2_1.py
# 這里導(dǎo)入上一級(jí)目錄下的 pack 下面的 config 文件 from parent.pack import config # mod2 def func(): print('pack2.mod2_1.func()') print("config: " + str(config.run)) if __name__ == '__main__': print('mod2_1 作為主程序運(yùn)行') else: print('mod2_1 被另一個(gè)模塊調(diào)用')
c. mod_2.py
# mod2 def func(): print('pack2.mod2_2.func()') if __name__ == '__main__': print('mod2_2 作為主程序運(yùn)行') else: print('mod2_2 被另一個(gè)模塊調(diào)用')
代碼:
https://gitee.com/zhiyong47/vine/tree/master/effective_codes/parent
到此這篇關(guān)于python 自定義包的實(shí)現(xiàn)示例的文章就介紹到這了,更多相關(guān)python 自定義包內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python入門(mén)之使用pandas分析excel數(shù)據(jù)
這篇文章主要給大家介紹了關(guān)于Python入門(mén)學(xué)習(xí)之使用pandas分析excel數(shù)據(jù)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Python在畫(huà)圖時(shí)使用特殊符號(hào)的方法總結(jié)
在制作圖表時(shí),如果遇到需要利用特殊符號(hào)進(jìn)行表示時(shí)該怎么辦呢?不用慌,這篇文章為大家總結(jié)了python畫(huà)圖中使用各種特殊符號(hào)的方式,需要的可以參考一下2022-04-04Python數(shù)據(jù)分析Pandas?Dataframe排序操作
這篇文章主要介紹了Python數(shù)據(jù)分析Pandas?Dataframe排序操作,數(shù)據(jù)的排序是比較常用的操作,DataFrame?的排序分為兩種,一種是對(duì)索引進(jìn)行排序,另一種是對(duì)值進(jìn)行排序,接下來(lái)就分別都介紹一下,需要的小伙伴可以參考一下2022-05-05Python實(shí)現(xiàn)數(shù)據(jù)集劃分(訓(xùn)練集和測(cè)試集)
這篇文章主要為大家詳細(xì)介紹了Python是如何實(shí)現(xiàn)數(shù)據(jù)集劃分的,分為訓(xùn)練集和測(cè)試集,文中的實(shí)現(xiàn)方法講解詳細(xì),感興趣的小伙伴可以了解一下2023-05-05Python tkinter 樹(shù)形列表控件(Treeview)的使用方法
這篇文章主要介紹了Python tkinter 樹(shù)形列表控件(Treeview)的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-04-04Python實(shí)現(xiàn)帶GUI界面的手寫(xiě)數(shù)字識(shí)別
這篇文章主要介紹了如何通過(guò)Python實(shí)現(xiàn)帶GUI界面的手寫(xiě)數(shù)字識(shí)別,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Python有一定的幫助,感興趣的可以了解一下2022-01-01python簡(jiǎn)單實(shí)現(xiàn)獲取當(dāng)前時(shí)間
最近項(xiàng)目中經(jīng)常需要python去取當(dāng)前的時(shí)間,雖然不是很難,但是老是忘記,用一次丟一次,為了能夠更好的記住,我今天特意寫(xiě)下python 當(dāng)前時(shí)間這篇文章,如果你覺(jué)的對(duì)你有用的話,可以收藏下。2016-08-08