首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >[Python]自定义包及3种包导入方式

[Python]自定义包及3种包导入方式

作者头像
祥知道
发布于 2020-03-10 08:48:11
发布于 2020-03-10 08:48:11
3.2K00
代码可运行
举报
文章被收录于专栏:祥的专栏祥的专栏
运行总次数:0
代码可运行

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:https://cloud.tencent.com/developer/article/1596466


文章目录

代码语言:txt
AI代码解释
复制
- @[toc]1.自定义包1.1. parent 目录中的文件__init__.py1.2. pack 目录中的文件__init__.pymod.py1.3. pack2 目录中的文件__init__.pymod2_1.pymod2_2.py2.导入(自定义)包的3种方法3.扩展

Python自定义包及3种包导入方式

1.自定义包

就是一个至少包含__init__.py文件的文件夹,这个文件是必须存在的,否则,Python就把这个目录当成普通目录(文件夹),而不是一个__init__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是对应包的名字。调用包就是执行包下的__init__.py文件

以下自定义了一个包,包所在的目录为D:\Code_Sources\Python\Test\,即就是这个目录下有个叫parent的包。

1.1. parent 目录中的文件

init.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# parent 的 __init__.py

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

1.2. pack 目录中的文件

init.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Pack 的 __init__.py

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

mod.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mod
def func():
    print('pack.mod.func()')

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

1.3. pack2 目录中的文件

init.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Pack2 的 __init__.py

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

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

mod2_1.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mod2
def func():
    print('pack2.mod2_1.func()')

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

mod2_2.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# mod2
def func():
    print('pack2.mod2_2.func()')

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

2.导入(自定义)包的3种方法

我在桌面C:\Users\Administrator\Desktop\新建了一个main.py文件**(和自定义的包不在一个目录)**,自定义包的目录:D:\Code_Sources\Python\Test\

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import sys

# 将包含parent包的路径添加进系统路径
sys.path.append(r"D:\Code_Sources\Python\Test") 


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__)

运行结果:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-----开始import-----

parent 初始化
Pack2初始化
mod2_1 被另一个模块调用
mod2_2 被另一个模块调用
Pack初始化
mod 被另一个模块调用
-----开始main-----

pack2.mod2_1.func()
pack2.mod2_2.func()
pack.mod.func()

pack2包中的模块有:
['mod2_1', 'mod2_2', 'mod2_3']

请按任意键继续. . .
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Python3入门学习四.md
描述:模块就是更高级的封装,而模块就是程序;实际就是将一个个python文件编写的函数导入到其他的py文件中进行调用;
全栈工程师修炼指南
2020/10/23
6630
python之模块和包
一 Python模块简介 1 模块化 一般来说,编程语言中,库,包,模块是同一种概念,是代码组织方式 python中只有一种模块对象类型,但是为了模块化组织的便利,提供了一个概念: 包 模块(module):指的是python的源代码文件 包(package):指的是模块组织在一起放入和包名同名的目录及相关文件 ---- 可以将代码量较大的程序分割成多个有组织,彼此间独立但又能互相交互的代码片段,这些自我包含的有组织的代码段就是模块 ---- 模块在物理形式上表现为以.py 结尾的代码文
py3study
2020/01/09
1.6K0
python之模块和包
python基础教程:包,对,没错,绝对不是双肩包!
包,Package,是一种Python模块的集合,从文件组织形式上看,包就是一个文件夹,里面放着各种模块(.py文件),也可以有子文件夹(子包)。包名构建了一个Python模块的命名空间。比如,模块名A.B表示A包中名为B的子模块。这种使用加点的模块名可以让你写的软件包里面的模块名称和其它软件包里面的模块名称一样,但又不相互冲突。
一墨编程学习
2019/05/15
5500
python3--模块和包,软件开发规范
在第一次导入某个模块时(比如my_module),会检查该模块是否已经被加载到内存中(执行文件的名称空间对应的内存),如果有则直接引用,如果没有,解释器则会查找同名的内建模块,如果还没有找到就从sys.path给出的目录列表中依次寻找my_module.py文件
py3study
2018/08/02
7780
【从零学习python 】37.Python自定义模块的使用和注意事项
除了使用系统提供的内置模块以外,我们还能自己写一个模块供自己的程序使用。一个.py文件就是一个模块,所以,自定义模块很简单,基本上相当于创建一个.py文件。但是,需要注意的是,如果一个.py文件要作为一个模块被别的代码使用,这个.py文件的名字一定要遵守标识符的命名规则。
全栈若城
2024/02/29
1870
11.python开源——工程项目结构
        模块对应的是一个.py 文件,那么module_name 就是这个文件去掉.py 之后的文件名,py 文件中可以直接定义一些变量、函数、类。
py3study
2020/01/08
7560
【Python】Python 包 ② ( 自定义 Python 包 | 导入并调用自定义 Python 包 | `__init__.py` 定义 `__all__` 变量 )
右键点击 PyCharm 中的 Python 工程根目录 , 选择 " New / Python Package " 选项 ,
韩曙亮
2023/10/11
6970
【Python】Python 包 ② ( 自定义 Python 包 | 导入并调用自定义 Python 包 | `__init__.py` 定义 `__all__` 变量 )
【愚公系列】2021年12月 Python教学课程 17-模块与包
在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护。为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码就相对较少,很多编程语言都采用这种组织代码的方式。
愚公搬代码
2021/12/15
4400
【愚公系列】2021年12月 Python教学课程 17-模块与包
Python类、模块、包的区别
模块,在Python可理解为对应于一个文件。在创建了一个脚本文件后,定义了某些函数和变量。你在其他需要这些功能的文件中,导入这模块,就可重用这些函数和变量。一般用module_name.fun_name,和module_name.var_name进行使用。这样的语义用法使模块看起来很像类或者名字空间,可将module_name 理解为名字限定符。模块名就是文件名去掉.py后缀。
hbbliyong
2018/08/01
1.3K0
Python基础-6 模块和包
在之前的程序里,你可能用过类似from math import pi的语句来导入变量或函数。这其实就是在使用模块。
一只大鸽子
2022/12/06
4140
Python模块
有了命名空间的概念,可以有效的解决函数或者是变量重名的问题。不同的命名空间中允许出现相同的函数名或者 是变量名。它们彼此之间不会相互影响,例如在Namespace A和B中同时有一个名为var的变量,对A.var赋值并不 会改变B.var的值。
星哥玩云
2022/09/08
1.3K0
Python模块
【Python】Python模块基础
自定义模块:如果你自己写一个py文件,在文件内写入一堆函数,则它被称为自定义模块,即使用python编写的.py文件
python亦希
2021/12/20
2K0
Python中的模块与包#学习猿地
> 系统模块就是一个python的程序脚本,专门提供给我们自己的程序使用。它们是在安装好python环境时,就已经存在的,需要的时候可以使用 import 导入到程序中使用。
学习猿地
2020/03/18
5840
4.模块与包
下面我会以tbjx.py 为例来介绍模块的使用:文件名tbjx.py 模块名tbjx
changxin7
2019/09/10
8790
【从零学习python 】38.Python包的使用及导入方式
现有以下包newmsg,包里由两个模块,分别是sendmsg.py、recvmsg.py文件。在包的上级文件夹里,有一个test.py文件,目标是在test.py文件里引入newmsg的两个模块。
全栈若城
2024/02/29
3210
【Python】教你彻底了解Python中的模块和包
在Python编程中,模块和包是组织和管理代码的重要工具。通过将代码划分为模块和包,可以提高代码的可维护性和重用性。本文将详细探讨Python中的模块和包的概念、创建与使用模块、标准库模块、自定义模块、包的结构与使用,以及一些实际应用示例。
E绵绵
2025/05/25
2350
python学习笔记5.3-包的创建
本文主要介绍了如何创建一个包以及包中模块的导入和调用方法。首先介绍了包的创建过程,然后阐述了如何合理使用__init__.py文件,使用相对导入的方法以及使用__all__关键词。最后,讨论了模块分解时的一些注意事项,包括包的转换以及导入方式的调整等。
锦小年
2018/01/02
8440
Python 自定义模块
1.import 模块名:导入模块中的所有内容(引入多个用逗号分隔) import random,time
用户7886150
2021/01/21
9140
【Python】对绝对导入与相对导入的理解的补充
在前一篇文章对相对导入的“相对”其实已经讲得比较清楚了,关键的一点是,“相对”是相对package的意思。相对导入的常用语法:
明月AI
2021/10/28
1.5K0
【Python】对绝对导入与相对导入的理解的补充
Python 包管理
1. 模块 一个模块就是一个包含python代码的文件,后缀名称是.py就可以,模块就是个python文件 为什么我们用模块 程序太大,编写维护非常不方便,需要拆分 模块可以增加代码重复利用的方法 当作命名空间使用,避免命名冲突 如何定义模块 模块就是一个普通文件,所以任何代码可以直接书写 不过根据模块的规范,最好在本块中编写以下内容 函数(单一功能) 类(相似功能的组合,或者类似业务模块) 测试代码 如何使用模块 模块直接导入 模块名称直接以数字开头,需要借助importlib帮助 语法 impo
ruochen
2021/03/03
7410
Python 包管理
相关推荐
Python3入门学习四.md
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档