自制包内容 回忆上次内容
- 上次导入了外部的py文件
- import my_module
- 导入一个自己定义的模块
- 可以使用my_module中的变量
- 不能 直接使用 my_module.py文件中的变量
- 只要加my_module.作为前缀就可以
- 直接导入导入变量、函数
- from my_module import pi
- 可以导入my_module.pi 并作为pi变量使用
- from my_module import pi as my_module_pi
- 导入变量并重命名
- 上次那个苹果香蕉统计程序
- 能封装成文件模块
- 再导入么?🤔
- 我们来改造原始的 apple.py
建立文件夹
添加图片注释,不超过 140 字(可选)
- 进入文件夹
- 准备编辑
- 我想要把原来的apple.py拆成立两个py文件
- input.py
- 负责输入 两个数字
- 分别是
- 苹果的数量
- 香蕉的数量
- output.py
- 负责计算水果总量
- 并输出最终水果总数
- 那python里面
- 有没有现成的 input和output 模块呢?
尝试修改
- 别重名了!
添加图片注释,不超过 140 字(可选)
- 看起来没有默认的input和output模块
- 不怕模块重名了
- 不过input好像是很重要的函数的名字
添加图片注释,不超过 140 字(可选)
- output.py 这个名字可以放心用
- input 这个名字修改为 get_fruits.py
拆分文件
- vi -o get_fruits.py output.py
- 进入vim后
添加图片注释,不超过 140 字(可选)
- :windo r ../apple.py
- 在两个窗口中都读取
- ../apple.py
- 上一层目录之下的apple.py
添加图片注释,不超过 140 字(可选)
编辑
- ctrl+j、ctrl+k
- 可以切换当前活动(active)窗口
- 修改代码 如下图所示
添加图片注释,不超过 140 字(可选)
- 注意这里是:wa|!python3 %
- :wa的意思是
- write all changed buffers
- 把所有修改了的缓存都存盘
- 然后再用python3来运行
运行结果
- 运行输入部分的环节时
- 没有问题
- 运行输出部分的环节时
- 出错了
添加图片注释,不超过 140 字(可选)
- 输入没有问题
- 但是参数a、b
- 好像没传过去?
调试程序
- 从get_fruits.py到output.py的过程中
- 好像没有传递成功?
- 到底 a 是多少呢?
- 输出看看
添加图片注释,不超过 140 字(可选)
- 给正确数据
添加图片注释,不超过 140 字(可选)
- a 根本没有被声明!
找到a
- a 不认
- a 是 getfruit 这个模块(module)里的变量
- 给a加上namespace
- get_fruits.a 认么?
添加图片注释,不超过 140 字(可选)
- 上码
- 再战
添加图片注释,不超过 140 字(可选)
- 这次认了
- 现在需要的就是赋值了
最终
添加图片注释,不超过 140 字(可选)
- 录入数据
添加图片注释,不超过 140 字(可选)
- 成功
- 我们真的自制了一个输入模块
- 为什么要把一个完成的程序
- 拆成两个模块呢?
复用性Reusability
- get_fruits.py作为 被导入的模块
- 可以 导入统计程序中 计算水果总量
- 也可以 导入计价程序中 计算水果价格
- 还可以 导入比较程序中 比较哪种水果更多
添加图片注释,不超过 140 字(可选)
- 代码 可以在不同的模块之间复用
- 以前用过什么 可复用的代码 吗?
复用的模块
- 有个模块 我们经常使用
- time
添加图片注释,不超过 140 字(可选)
- 我们可以感觉到 python 的可扩展性
- 从各种 python 程序
- 到底层的 python 各种辅助模块
- python 代码复用就是这么容易
- 这才是打一场人民战争的基础
- 如今我们也写了自己的python模块
- 这两个py文件
- get_fruits.py
- output.py
- 之间是什么关系呢?
结构
- 总共两个python文件
- output.py 是主模块
- get_fruits.py 是被引用的模块
添加图片注释,不超过 140 字(可选)
- 运行output.py主模块的时候
- 导入了 被引用的get_fruits.py
- 先录入
- 然后输出
- 如何理解 导入 呢?
- 英文
- import 导入
- export 导出
- 词根port 本意为港口
总结
- 这次把 apple.py 拆分了
- 拆成了
- 输入
- 主函数
- 使用 引用模块中变量的时候
- 要使用上包名
- get_fruits.a
- get_fruits.b
- 最终
- 拆分代码 成功!
- 可以将程序 拆分成
- 输入
- 输出
- 然后再由主函数调用吗?🤔
- 下次再说👋🏻
- 蓝桥->https://www.lanqiao.cn/courses/3584
- github->https://github.com/overmind1980/oeasy-python-tutorial
- gitee->https://gitee.com/overmind1980/oeasypython