Python 包

通常,在使用计算机的过程中,我们不会将所有的文件存储在同一个位置,因为它不容易管理和访问。因此,有必要使用组织良好的目录层次结构。

[En]

Usually, in the process of using the computer, we do not store all the files in the same location, because it is not easy to manage and access. Therefore, it is necessary to use a well-organized directory hierarchy.

所谓组织良好,就是将类似的文件保存在同一个目录中。例如,将所有歌曲保存在”音乐”目录中,将所有电影、电视保存在”视频”目录中。。。与此类似, Python 中提供了包和模块的概念,包用于目录,模块用于文件(.py)。

|版权声明:一去、二三里,未经博主允许不得转载。

包的管理

在开发项目的过程中,随着应用程序的规模越来越大,会出现很多模块。此时,您需要将相似的模块放在一个包中,将不同的模块放在不同的包中,这不仅使项目更易于管理,而且在概念上也更清晰。

[En]

In the process of developing a project, as the scale of the application becomes larger and larger, there will be many modules. At this point, you need to put similar modules in one package, and different modules in different packages, which not only makes the project easier to manage, but also clearer in concept.

一个目录可以包含子目录和文件,类似地,一个 Python 包也可以有子包和模块。

为了能让 Python 将目录视为一个包,该目录必须包含一个名为 ​ ​__init__.py​​ 的文件。该文件可以是空的,也可以包含有效的 Python 代码,这些代码将会在包被导入的时候执行,所以它可以用来初始化一个包,例如:确保其他模块被导入或设置一些值。

来创建一个 ​ ​Sound​​​ 包,其中包含两个模块 ​ ​play.py​​​ 和 ​ ​pause.py​​,目录结构如下:

模块 ​ ​play.py​​ 的内容为:

模块 ​ ​pause.py​​ 的内容为:

​__init__.py​​ 文件暂时为空,下面有专门介绍。

包的访问

假设,目录 ​ ​Sound​​​ 位于调用 shell 的目录中,或者包含在搜索路径或环境变量 ​ ​PYTHONPATH​​ 中。

当从交互式的 Python shell 中导入 ​ ​Sound​​ 时,看看会发生了什么?

可以看到包 ​ ​Sound​​​ 已经被加载了,但是模块 ​ ​play​​​ 和 ​ ​pause​​ 并没有。

所以,不能仅通过导入 ​ ​Sound​​ 来访问它们,可以使用下述导入方式:

init.py 文件

目前为止,​ ​__init__.py​​ 依然为空,那么这个文件究竟是干什么的?

在文件中添加一行简单的代码:

[En]

Add a simple line of code to the file:

导入 ​ ​Sound​​,看看会发生什么?

没错,​ ​__init__.py​​​ 中的代码被执行了。也就是说,在包导入的时候,会自动执行其包含的 ​ ​__init__.py​​ 的所有代码。

这样以来,上面的问题又多了一种解决方案,可以使用 ​ ​__init__.py​​ 自动加载这些模块,将下面的代码添加到该文件中进行初始化:

再次访问 ​ ​play​​​ 和 ​ ​pause​​:

OK,完美运行!

Original: https://blog.51cto.com/waleon/5525596
Author: waleon
Title: Python 包

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/504682/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 详细解读numpy中transpose()函数(附带实例帮助理解)

    在Numpy对矩阵的转置中,我们可以用transpose()函数来处理。 这个函数的运行是非常反常理的,可能会令人陷入思维误区。 我就是在学习的过程中感到很难理解,但所幸查阅了很多…

    Python 2023年8月25日
    084
  • Django模板语法和ModelForm

    ModelForm 或者 Form组件的作用: 模板时间格式化显示 {{item.event_start|date:”Y-m-d H:i:s”}}{{bio…

    Python 2023年8月4日
    086
  • pyplot.plot使用遇到:UserWarning: Starting a Matplotlib GUI outside of the main thread will likely fail

    在threading.Thread创建的线程中使用了matplotlib.pyplot来做图,但出现: UserWarning: Starting a Matplotlib GUI…

    Python 2023年8月30日
    096
  • 用Python编了一个鱿鱼游戏

    用Python编了一个鱿鱼游戏 关键词:python, pygame, squid game, 鱿鱼游戏python 源代码下载:点击下载squidgame1.zip文件pytho…

    Python 2023年9月19日
    083
  • 接口自动化框架之python pytest-mark(三)

    一、mark标签介绍 在测试用例/测试类前面加上: @pytest.mark.标签名,打标记…

    Python 2023年9月12日
    087
  • 用vue+flask做了个音乐播放器(后端部分)

    这篇文章用来接着介绍该音乐播放器的后端部分,因为涉及爬虫不知道会不会被限同时也为了阅读者不会觉得过于繁杂所以分开两篇发。这里是上一篇关于前端部分的介绍。 后端 这里使用的后端是由p…

    Python 2023年8月13日
    0129
  • Requests,PyTest

    1:将Post和Get请求进行封装 GET: 无参:get(URL) 含参数: URL后拼接 get(URL,params=) POST: post(URL,…

    Python 2023年9月12日
    082
  • Go flag 详解,实现二级子命令

    🚀 优质资源分享 🚀 学习路线指引(点击解锁)知识定位人群定位🧡 Python实战微信订餐小程序 🧡 进阶级本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯…

    Python 2023年8月15日
    096
  • python实时文件监控

    方1:​ import subprocess ​ if name == ‘main‘:​ log_file = ‘/tmp/debug.log&…

    Python 2023年5月24日
    087
  • pycharm安装pygame

    pycharm成功安装pygame后,仍然出现无法找到pygame模块错误的解决方案记录2021-05-31 问题描述 解决方案记录 * 1.先卸载掉原有的pygame 2.找到a…

    Python 2023年9月20日
    074
  • 2、详解低门槛搭建个人量化平台-python环境及Web框架

    本章作为专栏–低门槛搭建个人量化平台的预备工作,介绍怎样安装python环境,及其搭建自己的web服务。 1、python window下使用python 3.7版本:https:…

    Python 2023年8月14日
    0103
  • Pandas中常用日期操作

    这里只会介绍在使用Pandas过程中常用到的日期操作。 1. 构造日期类索引 Pandas可以使用date_range()、period_range()、timedelta_ran…

    Python 2023年8月7日
    0103
  • 线程.FTP.SFTP.打包

    Windows就是多线程模式. 每一个解决方案就是一个进程. 一个进程下拥有多个线程. 单核的处理器不存在多线程. 是CPU在每一个线程上切换处理. 在人反应不过来的情况下完成同步…

    Python 2023年6月6日
    0128
  • Unity制作 小球吃金币 游戏

    工程源文件下载地址-百度网盘 1. 新建一个项目 2. 新建一个平面对象 3. 新建一个材质球 为材质球设置颜色 5. 将材质球拖拽赋值给平面 6. 创建立方体对象,拉伸至平面宽度…

    Python 2023年10月8日
    0120
  • Java描述 LeetCode,131. 分割回文串

    𝑰’𝒎 𝒉𝒉𝒈, 𝑰 𝒂𝒎 𝒂 𝒈𝒓𝒂𝒅𝒖𝒂𝒕𝒆 𝒔𝒕𝒖𝒅𝒆𝒏𝒕 𝒇𝒓𝒐𝒎 𝑵𝒂𝒏𝒋𝒊𝒏𝒈, 𝑪𝒉𝒊𝒏𝒂. 🏫 𝑺𝒉𝒄𝒐𝒐𝒍: 𝑯𝒐𝒉𝒂𝒊 𝑼𝒏𝒊𝒗𝒆𝒓𝒔𝒊𝒕𝒚 🌱 𝑳…

    Python 2023年10月24日
    093
  • JS数据结构与算法-队列结构

    队列结构 一.认识队列 受限的线性结构: 我们已经学习了一种受限的线性结构:栈结构. 并且已经知道这种受限的数据结构对于解决某些特定问题,会有特别的效果. 下面,我们再来学习另外一…

    Python 2023年10月15日
    097
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球