包的使用 | 手把手教你入门Python之五十-阿里云开发者社区

开发者社区> 温柔的养猫人> 正文

包的使用 | 手把手教你入门Python之五十

简介: 一个模块就是一个 py 文件,在 Python 里为了对模块分类管理,就需要划分不同的文件夹。多个有联系的模块可以将其放到同一个文件夹下,为了称呼方便,一般把 Python 里的一个代码文件夹称为一个包。
+关注继续查看

上一篇:怎样使用自定义模块? | 手把手教你入门Python之四十九
下一篇:初识面向对象 | 手把手教你入门Python之五十一

本文来自于千锋教育在阿里云开发者社区学习中心上线课程《Python入门2020最新大课》,主讲人姜伟。

包的使用

一个模块就是一个 py 文件,在 Python 里为了对模块分类管理,就需要划分不同的文件夹。多个有联系的模块可以将其放到同一个文件夹下,为了称呼方便,一般把 Python 里的一个代码文件夹称为一个包

导入包的方式

现有以下包newmsg ,包里有两个模块,分别是sendmsg.py 、recvmsg.py 文件。在包的上级文件夹里,有一个test.py 文件,目标是在test.py 文件里引入newmsg 的两个模块。

目录结构如下图所示:
image.png

sendmsg.py文件里的内容如下:

def send_msg():
    print('------sendmsg方法被调用了-------')

recvmsg.py文件里的内容如下:

def recv_msg():
    print('-----recvmsg方法被调用了--------')

可以使用以下几种方式来导入模块,使用模块里的方法。
1>. 直接使用包名.模块名导入指定的模块。
image.png
2>. 使用from xxx import xxx 方式导入指定模块。
image.png
3>. 使用__init__.py ⽂文件,导入包里的指定模块。
可以在newmsg 里创建__init__.py文件,在该文件里导入指定的内容。
image.png
__init__.py文件里编写代码:

from . import sendmsg # 导入指定的模块   . 代表的是当前文件夹

test.py文件里的代码

import newmsg # 导入时,只需要输入包名即可。在包名的__init__.py文件里,导入了指定模块
newmsg.sendmsg.sendm_msg() # 可以直接调用对应的方法
# newmsg.recvmsg.recv_msg() 不可以使用 recvmsg 模块,因为 __init__.py文件里没有导入这个模块

4.> 使⽤用__init__.py文件,结合__all__ 属性,导入包里的所有模块。
newmsg 包里的__init__.py 文件里编写代码:

__all__ = ["sendmsg","recvmsg"] # 指定导入的内容

test.py文件代码:

from newmsg import * # 将newmsg里的__inint__.py文件里,__all__属性对应的所有模块都导入
sendmsg.sendmsg()
recvmsg.recvmsg()

总结

  • 包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py文件,那么这个文件夹就称之为包。
  • 有效避免模块名称冲突问题,让应用组织结构更加清晰

__init__.py 文件有什么用

__init__.py 控制着包的导入行为。__init__.py 为空仅仅是把这个包导入,不会导入包中的模块。可以在__init__.py 文件中编写内容。

newmsg/__init__.py文件:

print('hello world')

别的模块在引入这个包的时候,会自动调用这段代码。
image.png

__all__

__init__.py文件中,定义一个__all__ 变量,它控制着 from 包名 import *时导入的模块。
newmsg/__init__.py 文件:

__all__ = ['sendmsg','recvmsg']

image.png

配套视频

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
7238 0
Python的内置属性 | 手把手教你入门Python之五十七
使⽤内置函数 dir 可以查看⼀个对象⽀持的所有属性和⽅法,Python中存在着很多的内置属性。
836 0
详解字符串| 手把手教你入门Python之二十六
本节介绍字符串介绍,下标和切片
937 0
self的使用 | 手把手教你入门Python之五十二
通过 self.属性名 可以访问到这个对象的属性;通过 self.方法名() 可以调用这个对象的方法。
945 0
包的使用 | 手把手教你入门Python之五十
一个模块就是一个 py 文件,在 Python 里为了对模块分类管理,就需要划分不同的文件夹。多个有联系的模块可以将其放到同一个文件夹下,为了称呼方便,一般把 Python 里的一个代码文件夹称为一个包。
982 0
1172
文章
2
问答
来源圈子
更多
Python学习资料大全,包含Python编程学习、实战案例分享、开发者必知词条等内容。
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《Nacos架构&原理》
立即下载
《看见新力量:二》电子书
立即下载
云上自动化运维(CloudOps)白皮书
立即下载