Skip to content

Latest commit

 

History

History
174 lines (119 loc) · 4.54 KB

198-542961-嵌套软件包_package.sy.md

File metadata and controls

174 lines (119 loc) · 4.54 KB
show version enable_checker
step
1.0
true

自定义命名空间(namespace)

回忆

  • 上次进入系统类库的位置
    • /usr/lib/python3.8
  • 编写我们自己的oeasy.py
    • 这个文件就是一个模块
    • 这个模块可以在游乐场和py文件中被导入(import)
    • 导入后模块执行主程序
  • 也可以建立一个文件夹
    • 在文件夹中建立__main__.py
    • 这样文件夹就是一个模块
    • 导入的时候执行__main__.py
    • 那么这个文件夹可以嵌套么?
    • 做成一层层的那种嵌套软件包(package)的形式?

观察类库

  • 用tree命令观察类库结构

图片描述

  • 确实存在这种层层嵌套的文件夹
  • 这方面的帮助在哪呢?

手册

  • sound下面可以有三个子模块
    • formats
    • effects
    • filters

图片描述

  • 模块文件夹下面必须得有一个__init__.py
  • __init__.py文件用来初始化(initialization)文件夹
  • 文件夹成为成为一个软件包(package)
  • init是什么意思呢?

initialize

图片描述

  • initialize 头文字大写

图片描述

  • 目前也泛指开始入口

图片描述

重启与初始化

  • 把系统恢复到最初的状态
  • 进入最初状态之后就需要初始化

图片描述

  • 目前也泛指各种模块和空间
    • 初始化数组
    • 初始化对象
    • 初始化磁盘空间
    • 初始化某个模块
  • 我们这个package怎么初始化?

构建

图片描述

  • 建立这样的文件结构
  • 可以运行吗?

运行

图片描述

  • 确实是可以运行的
  • 顺序是
    • 先初始化(initialize)org
    • 再初始化(initialize)org.oeasy
    • 最后运行org.oeasy.oeasy_module
    • 把相关的__init__.py 编译成了pyc文件
    • 加载到python虚拟机当中
    • 依次执行的
  • 如何从汇编角度理解呢?

汇编角度

图片描述

  • 分别编译
  • __init__.py完成初始化的工作

图片描述

  • 可以在游乐场运行么?

游乐场

图片描述

  • 可以的
  • 如果我的oeasy_module不是一个py文件
  • 而是一个文件夹可以么?

module folder(模块文件夹)

  • 导入包(package)的时候会先执行__init__.py
  • 一层层从上向下执行
  • 直行到新的模块文件夹的时候
  • 也是先执行模块文件夹下的 __init__.py初始化这个module
  • 然后运行模块文件夹下的__main__.py作为主程序

图片描述

  • 在游乐场什么情况呢?

游乐场

图片描述

  • 游乐场中也是依次导入包(package)
  • 依次执行__init__.py
  • 究竟应该如何理解package呢?

软件包

  • package就是把东西打到bag里面

图片描述

  • 荷兰语也叫做baggage

图片描述

  • 在软件领域如何理解呢?

软件领域中的package

图片描述

  • 把软件分门别类
  • 放到一个个文件夹中
  • 就是打包

图片描述

  • 每个包都得初始化(initialize)
  • 告诉python这个一个包(package)
  • 包里面可以有包
  • 可以嵌套多层

总结

  • 我们这次了解了包(package)
  • 一个文件夹初始化(initial)了之后就是一个包(package)
  • 包(package)里面可以有更细化的包
  • 模块(module)
    • 可以是一个py文件
    • 也可以是一个包
    • 包一定要有初始化
      • __init__.py
  • 导入包的时候
    • 依次执行__init__.py
  • 包和模块复杂了之后没有文档就很无从下手
  • 可以给我们的模块做文档么?🤔
  • 我们下次再说👋