python中的包与模块
【摘要】 详解python中的包与模块
目录
- 什么是python的包与模块
- 包的身份证
- 如何创建包
- 包的导入
- 模块的导入
什么是python的包
包就是文件夹,包中还可以有包,也就是子文件夹
一个个python文件就是模块
__init__就是Python包的身份证。Python解释器,当发现文件夹下有这样一个Python脚本。就会认为这是一个合法的Python包。
包的身份证
__init__.py
是每一个python包里必须存在的文件- init.py可以空空如也没有任何代码,但必须要有这样一个文件
如何创建包
- 要有一个主题,明确功能,方便使用
- 层次分明,调用清晰
Pycharm中创建包
包的导入import
功能:
- 将python中的某个包(或模块),导入到当前的py文件中
用法:
import package
参数:
package
: 被导入的包的名字
要求:
只会拿到对应包下
__init__
中的功能或当前模块下的功能进入python解释器之后,当包的结构更改就需要重新进入一次我们的Python解释器。==为什么要退出再进入呢?== 原因是因为当前的包的结构发生了变化。import之后,我们的包如果发生了变化。我们就需要退出再进入。
模块的导入from…import
功能
- 通过从某个包中找到对应的模块
用法:
from package import module
参数:
package
: 来源的包名module
: 包中的目标模块
举例:
- from animal import dog.action
- action.run()
我们通过
from...import
直接找到了dog模块,所以只需要使用dog模块直接用.
的方式找到里边的方法并执行
有相同模块时,可以使用as
为模块起别名
导入模块中的函数
在同级别的__init__.py
中导入
- 这样可以简化导入书写
- 实际上在一个包的环境下。如果想在__init__中导入其他的包或者是模块。只需要在当前的包名前面加一个点。
- **==如果在
__init__.py
模块中导入同文件夹下的包时没有使用.
进行相对导入,Python会尝试在模块搜索路径中查找指定的包名,而不是当前目录或当前包。== - ==这意味着,如果没有使用相对导入并添加
.
,Python将尝试从模块搜索路径中查找与包名相匹配的模块或包,而不是当前目录下的同名包。== - ==这可能导致以下两种情况:==
==1.如果在模块搜索路径中存在与包名相匹配的其他模块或包,Python会导入该模块或包,而不是当前目录下的同名包。==
- ==如果在模块搜索路径中找不到与包名相匹配的模块或包,将引发导入错误,指示找不到对应的模块或包。
因此,为了确保在__init__.py
模块中能够导入同文件夹下的包,应该使用相对导入并显式地添加.
表示当前包。这样可以确保导入语句在当前目录下进行正确的模块或包导入。**==
在
cat
前加入.
代表当前目录在
__init__.py**
导入模块后,跟animal同级别的test.py
也可直接导入animal的__init__.py中导入过的模块
同一个包的导入多个函数
- 使用空格隔开
from animal import cat, dog
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)