Skip to content

Latest commit

 

History

History
138 lines (95 loc) · 3.44 KB

197-536506-自定义模块_module.sy.md

File metadata and controls

138 lines (95 loc) · 3.44 KB
show version enable_checker
step
1.0
true

自定义命名空间(namespace)

回忆

  • 上次研究了跨文件模块调用函数
  • 使用了两个模块
    • os
    • random
  • 其中random还调用了os
  • os有两部分组成
    • os.py
    • 还有一些系统调用的部分
    • 是系统相关的
    • 写在c的源码中
  • 我可以自己定义一些
    • 模块
    • 变量
    • 函数么?

运行模块

图片描述

  • 运行模块就是运行模块文件夹下的__main__.py

编写模块

图片描述

  • 首先进入/usr/lib/python3.8位置
  • 然后尝试调用

图片描述

  • 引用之后可以再次引用么?

引用

图片描述

  • 任意一个位置都可以引用这个模块么?

图片描述

  • 可以引用
  • 这样我们就可以复用原来的代码了!!!
  • 而且把一个小功能封装成一个模块

就像电子的模块

  • 具体这个音频信号
  • 怎么发生
  • 对波形进行怎样的调整
  • 模拟出什么样的音色
  • 都是可以调整的

图片描述

  • 觉得某个音色不错
  • 可以把这个调整的结果固化下来
  • 变成一个模块
  • 下次调用模块就成了

小模块

  • 没有那么多的线了
  • 只有少量接口
  • 一调用就好使

图片描述

  • 函数也是封装
  • 模块也是封装
  • 有什么区别呢?

模块与函数

  • 一个模块里面包含若干函数、设置
  • 就好像我们的一个电子琴
  • 都封装好了
  • 具体选择什么音色 都是设置
  • 设置好之后 按键就完事了
  • 按键就是调用具体的函数

图片描述

  • 函数是模块中的一部分
  • 模块还包括常量、配置等等其他部分
  • 这些都是写在具体文件里的
  • 模块和具体文件是什么关系呢?

模块定义

  • 一个oeasy.py文件就是一个模块(module)

图片描述

  • 被引用的模块里面会有一个全局(global)变量
    • __name__ 这个name里面存着模块的名字
  • 我们去试试

__name__

图片描述

  • 重新编辑/usr/lib/python3.8/oeasy.py

图片描述

  • module名就是文件名

图片描述

  • 可以给这个模块更多帮助信息么?

总结

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