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)文章
Django配置Mysql數(shù)據(jù)庫(kù)連接的實(shí)現(xiàn)
本文主要介紹了Django配置Mysql數(shù)據(jù)庫(kù)連接的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
Python使用Pandas和Matplotlib按中值對(duì)箱形圖進(jìn)行排序
箱形圖是可視化數(shù)據(jù)分布的強(qiáng)大工具,因?yàn)樗鼈兲峁┝藢?duì)數(shù)據(jù)集內(nèi)的散布、四分位數(shù)和離群值的洞察,在本文中,我們將探索如何在Python中使用Pandas和Matplotlib按中值對(duì)箱形圖進(jìn)行排序,需要的朋友可以參考下2025-04-04
python中threading超線程用法實(shí)例分析
這篇文章主要介紹了python中threading超線程用法,實(shí)例分析了Python中threading模塊的相關(guān)使用技巧,需要的朋友可以參考下2015-05-05
python實(shí)現(xiàn)電腦操控安卓手機(jī)
網(wǎng)上雖然有很多教程,但是隨著版本的更新總有各種各樣的坑,本文以親身踏坑經(jīng)歷介紹了電腦使用python操控安卓手機(jī),從安裝到使用方法,感興趣的可以了解一下2021-05-05
python通過(guò)paramiko復(fù)制遠(yuǎn)程文件及文件目錄到本地
這篇文章主要為大家詳細(xì)介紹了python通過(guò)paramiko復(fù)制遠(yuǎn)程文件及文件目錄到本地,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
復(fù)習(xí)Python中的字符串知識(shí)點(diǎn)
這篇文章主要介紹了Python中字符串的一些知識(shí)點(diǎn),來(lái)自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04

