广告位联系
返回顶部
分享到

python自定义包的实现

python 来源:互联网 作者:佚名 发布时间:2024-05-14 21:38:55 人浏览
摘要

1. 代码目录 创建自定义包的时候,原理是当python检测到一个目录下存在__init__.py文件时,python就会把它当成一个模块(module)。 下面这个例子是网上整理的代码,但是有些小改动,可以直接拿来

1. 代码目录

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

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

在这里插入图片描述

2. 每个目录的代码

parent 主目录

  • main.py

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

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

1

2

3

4

if __name__ == '__main__':

    print('parent 作为主程序运行')

else:

    print('parent 初始化')

pack 包

a. __init__.py

1

2

3

4

if __name__ == '__main__':

    print('作为主程序运行')

else:

    print('Pack初始化')

b. config.py

1

run = 9999

c. mod.py

1

2

3

4

5

6

7

8

# mod

def func():

    print('pack.mod.func()')

 

if __name__ == '__main__':

    print('mod 作为主程序运行')

else:

    print('mod 被另一个模块调用')

pack2 包

a. __init__.py

1

2

3

4

5

6

7

8

9

# Pack2 的 __init__.py

 

# __all__ 用于当前Pack2包是所包含的模块

__all__ = ["mod2_1", "mod2_2", "mod2_3"]

 

if __name__ == '__main__':

    print('Pack2作为主程序运行')

else:

    print('Pack2初始化')

b. mod2_1.py

1

2

3

4

5

6

7

8

9

10

11

12

# 这里导入上一级目录下的 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

1

2

3

4

5

6

7

8

# 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


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 :
相关文章
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计