python中的包与模块

举报
乂氼S 发表于 2023/06/07 14:10:23 2023/06/07
【摘要】 详解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: 包中的目标模块
  • 举例:

    1. from animal import dog.action
    2. action.run()
  • 我们通过from...import直接找到了dog模块,所以只需要使用dog模块直接用.的方式找到里边的方法并执行

  • 在这里插入图片描述

有相同模块时,可以使用as为模块起别名

在这里插入图片描述

导入模块中的函数

在这里插入图片描述

在同级别的__init__.py中导入

  • 这样可以简化导入书写
  • 实际上在一个包的环境下。如果想在__init__中导入其他的包或者是模块。只需要在当前的包名前面加一个点。
  • **==如果在 __init__.py 模块中导入同文件夹下的包时没有使用 . 进行相对导入,Python会尝试在模块搜索路径中查找指定的包名,而不是当前目录或当前包。==
  • ==这意味着,如果没有使用相对导入并添加 .,Python将尝试从模块搜索路径中查找与包名相匹配的模块或包,而不是当前目录下的同名包。==
  • ==这可能导致以下两种情况:==
    ==1.如果在模块搜索路径中存在与包名相匹配的其他模块或包,Python会导入该模块或包,而不是当前目录下的同名包。==
  1. ==如果在模块搜索路径中找不到与包名相匹配的模块或包,将引发导入错误,指示找不到对应的模块或包。
    因此,为了确保在 __init__.py 模块中能够导入同文件夹下的包,应该使用相对导入并显式地添加 . 表示当前包。这样可以确保导入语句在当前目录下进行正确的模块或包导入。**==
  • cat前加入.代表当前目录

  • 在这里插入图片描述

  • __init__.py**导入模块后,跟animal同级别的test.py也可直接导入animal的__init__.py中导入过的模块

  • 在这里插入图片描述

同一个包的导入多个函数

  • 使用空格隔开
  • from animal import cat, dog
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。