python 自定义包的实现示例

 更新时间:2024年05月13日 11:20:49   作者:yong1585855343  
如果Python的模块过多,可能造成一定的混乱,这时可以通过Python包来管理模块,本文主要介绍了python 自定义包的实现示例,感兴趣的可以了解一下

1. 代码目录

创建自定义包的时候,原理是当 python 检测到一个目录下存在 __init__.py 文件时,python 就会把它当成一个模块(module)。

下面这个例子是网上整理的代码,但是有些小改动,可以直接拿来就用。
看代码结构:

在这里插入图片描述

2. 每个目录的代码

parent 主目录

  • main.py
import sys

# 这一行需要放在最前面,也是最关键
# 将包含parent包的路径添加进系统路径
sys.path.append(r"..")


print('-----开始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('-----开始main-----\n')

    # 第1种 引用的调用方法
    parent.pack2.mod2_1.func()
    # 第2种 引用的调用方法
    p2m2.func()
    # 第3种 引用的调用方法
    func()
    
    #  import 就会把注册在包 __init__.py 文件中 __all__ 列表中的子模块和子包导入到当前作用域中
    print('\npack2包中的模块有:')
    print(parent.pack2.__all__)
  • __init__.py
if __name__ == '__main__':
    print('parent 作为主程序运行')
else:
    print('parent 初始化')

pack 包

a. __init__.py

if __name__ == '__main__':
    print('作为主程序运行')
else:
    print('Pack初始化')

b. config.py

run = 9999

c. mod.py

# mod
def func():
    print('pack.mod.func()')

if __name__ == '__main__':
    print('mod 作为主程序运行')
else:
    print('mod 被另一个模块调用')

pack2 包

a. __init__.py

# Pack2 的 __init__.py

# __all__ 用于当前Pack2包是所包含的模块
__all__ = ["mod2_1", "mod2_2", "mod2_3"]

if __name__ == '__main__':
    print('Pack2作为主程序运行')
else:
    print('Pack2初始化')

b. mod2_1.py

# 这里导入上一级目录下的 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 作为主程序运行')
else:
    print('mod2_1 被另一个模块调用')

c. mod_2.py

# mod2
def func():
    print('pack2.mod2_2.func()')

if __name__ == '__main__':
    print('mod2_2 作为主程序运行')
else:
    print('mod2_2 被另一个模块调用')

代码:

https://gitee.com/zhiyong47/vine/tree/master/effective_codes/parent

到此这篇关于python 自定义包的实现示例的文章就介绍到这了,更多相关python 自定义包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python 进程 进程池 进程间通信实现解析

    python 进程 进程池 进程间通信实现解析

    这篇文章主要介绍了python 进程 进程池 进程间通信实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Pytorch建模过程中的DataLoader与Dataset示例详解

    Pytorch建模过程中的DataLoader与Dataset示例详解

    这篇文章主要介绍了Pytorch建模过程中的DataLoader与Dataset,同时PyTorch针对不同的专业领域,也提供有不同的模块,例如 TorchText, TorchVision, TorchAudio,这些模块中也都包含一些真实数据集示例,本文给大家介绍的非常详细,需要的朋友参考下吧
    2023-01-01
  • Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解

    Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句实例详解

    这篇文章主要介绍了Python3.5基础之变量、数据结构、条件和循环语句、break与continue语句,结合实例形式详细分析Python3.5编程入门相关的变量、数据结构、常用条件与循环语句操作技巧及注意事项,需要的朋友可以参考下
    2019-04-04
  • Python自定义logger模块的实例代码

    Python自定义logger模块的实例代码

    Python标准库中的logging模块提供了日志记录的功能,自定义 Logger 可以根据项目的需求定制化日志记录,满足特定的日志记录格式、输出目标和日志级别等要求,本文给大家介绍了Python自定义logger模块的实例代码,需要的朋友可以参考下
    2024-02-02
  • Pytest如何使用mark的方法

    Pytest如何使用mark的方法

    本文主要介绍了Pytest如何使用mark的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • Python datacompy 找出两个DataFrames不同的地方

    Python datacompy 找出两个DataFrames不同的地方

    本文主要介绍了Python datacompy 找出两个DataFrames不同的地方,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>
    2022-05-05
  • Python简单实现Base64编码和解码的方法

    Python简单实现Base64编码和解码的方法

    这篇文章主要介绍了Python简单实现Base64编码和解码的方法,结合具体实例形式分析了Python实现base64编码解码相关函数与使用技巧,需要的朋友可以参考下
    2017-04-04
  • Python接收手机短信的代码整理

    Python接收手机短信的代码整理

    在本篇文章里小编给大家整理的是一篇关于Python接收手机短信的代码内容,需要的朋友们可以学习下。
    2020-08-08
  • python批量导入数据进Elasticsearch的实例

    python批量导入数据进Elasticsearch的实例

    今天小编就为大家分享一篇python批量导入数据进Elasticsearch的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • python 使用OpenCV进行曝光融合

    python 使用OpenCV进行曝光融合

    这篇文章主要介绍了python 使用OpenCV进行曝光融合,使用OpenCV的Exposure Fusion,曝光融合是一种将使用不同曝光设置拍摄的图像合成为一张看起来像色调映射的高动态范围(HDR)图像的图像的方,下文更多详细内容介绍,需要的小伙伴可以参考一下
    2022-04-04

最新评论