[oeasy]python0141_自制模块_module_reusability_复用性
自制包内容
回忆上次内容
上次导入了外部的py文件
不能 直接使用 my_module.py文件中的变量
只要加
my_module.
作为前缀就可以导入一个自己定义的模块
import my_module
可以使用my_module中的变量
直接导入导入变量、函数
导入变量并重命名
可以导入my_module.pi 并作为pi变量使用
from my_module import pi
from my_module import pi as my_module_pi
上次那个苹果香蕉统计程序
能封装成文件模块
再导入么?🤔
我们来改造原始的 apple.py
建立文件夹

进入文件夹
准备编辑
我想要把原来的apple.py拆成立两个py文件
负责计算水果总量
并输出最终水果总数
负责输入 两个数字
分别是
苹果的数量
香蕉的数量
input.py
output.py
那python里面
有没有现成的 input和output 模块呢?
尝试修改
别重名了!

看起来没有默认的input和output模块
不怕模块重名了
不过input好像是很重要的函数的名字

output.py 这个名字可以放心用
input 这个名字修改为 get_fruits.py
拆分文件
vi -o get_fruits.py output.py
进入vim后

:windo r ../apple.py
../apple.py
上一层目录之下的apple.py
在两个窗口中都读取

编辑
ctrl+j、ctrl+k
可以切换当前活动(active)窗口
修改代码 如下图所示

注意这里是
:wa|!python3 %
w
ritea
ll changed buffers把所有修改了的缓存都存盘
:wa
的意思是然后再用python3来运行
运行结果
运行输入部分的环节时
没有问题
运行输出部分的环节时
出错了

输入没有问题
但是参数a、b
好像没传过去?
调试程序
从get_fruits.py到output.py的过程中
输出看看
好像没有传递成功?
到底
a
是多少呢?

给正确数据

a 根本没有被声明!
找到a
a 不认
a 是 getfruit 这个模块(module)里的变量
给a加上namespace
get_fruits.a 认么?

上码
再战

这次认了
现在需要的就是赋值了
最终

录入数据

成功
我们真的自制了一个输入模块
为什么要把一个完成的程序
拆成两个模块呢?
复用性Reusability
get_fruits.py作为 被导入的模块
可以 导入统计程序中 计算水果总量
也可以 导入计价程序中 计算水果价格
还可以 导入比较程序中 比较哪种水果更多

代码 可以在不同的模块之间复用
以前用过什么 可复用的代码 吗?
复用的模块
有个模块 我们经常使用
time

我们可以感觉到 python 的可扩展性
从各种 python 程序
到底层的 python 各种辅助模块
python 代码复用就是这么容易
这才是打一场人民战争的基础
如今我们也写了自己的python模块
这两个py文件
get_fruits.py
output.py
之间是什么关系呢?
结构
总共两个python文件
output.py 是主模块
get_fruits.py 是被引用的模块

运行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