[oeasy]python0143_主控程序_main
主控程序
回憶上次內(nèi)容
上次把 apple.py 拆分成了
輸入
主函數(shù)
引用模塊中變量的時(shí)候
get_fruits.a
get_fruits.b
要帶上包(module)名
最終
拆分代碼 成功!
可以將程序
輸入
輸出
再拆分成
然后 再由主函數(shù)調(diào)用嗎???
建立主控
新建一個(gè) main.py 文件
導(dǎo)入 input、output 兩個(gè)包
然后運(yùn)行
vi -o main.py get_fruits.py output.py

增大窗口寬度
ctrl+w,+
減小窗口寬度
ctrl+w,-
運(yùn)行

運(yùn)行成功
程序結(jié)構(gòu)

既然我在 main.py 里面已經(jīng)導(dǎo)入了 input 這個(gè)包
我還有必要在 output 中導(dǎo)入這個(gè)包么?
實(shí)踐出真知
試著刪除output中的第一句

嘗試
失??!

還是需要在 output 中導(dǎo)入 get_fruits 這個(gè)包的
雖然 main 認(rèn)識(shí)了 get_fruits
但是 output 不認(rèn)識(shí)也不行
不認(rèn)識(shí) 就無(wú)從得到輸入的數(shù)值
我們跳出具體文件
去觀察文件架結(jié)構(gòu)
文件結(jié)構(gòu)
可以看到出現(xiàn)了
兩個(gè)被引用包的 pyc 文件

能對(duì)比一下嗎?
對(duì)比

編譯后的pyc文件
字符串
變量名
函數(shù)名
依稀能夠看到

模塊隱隱約約
是可以看懂的
順序過(guò)程
其實(shí)代碼可以分成三塊
輸入
處理
輸出

這是一個(gè)典型的
面向過(guò)程
的 程序把復(fù)雜的過(guò)程
每個(gè)模塊 做自己簡(jiǎn)單明確的事情
專業(yè)分工
提高效率
分解成 相對(duì)簡(jiǎn)單明確的模塊
面向過(guò)程
就是 Procedure Oriented按部就班
這是工業(yè)時(shí)代
提高效率的思維模式
分工明確
鐵路警察
各管一段
不要想著怎么發(fā)明輪子
輪子有現(xiàn)成的
拿來(lái)用就完事了

接下來(lái)把模塊分成三塊
功能作用模塊名輸入接收到什么信號(hào)get_fruits處理怎么處理信號(hào)process輸出最終輸出什么信號(hào)output
那建立 process.py
三步走
main
需要 3 個(gè)包都導(dǎo)入
process
只需要導(dǎo)入 get_fruits
get_fruits
只被執(zhí)行一次
雖然被導(dǎo)入了兩次
但是輸入數(shù)值的部分
output
只需要 process 模塊求和的結(jié)果
而不需要導(dǎo)入 get_fruits 模塊
需要明確 total 來(lái)自于 process 包

測(cè)試結(jié)果
會(huì)如何呢?
能成功
數(shù)字(123)當(dāng)做測(cè)試用例的話
但是用字母(abc)當(dāng)測(cè)試用例的話
不成功 ?????♀?

問(wèn)題出在process.py中
int(a) + int(b)那一步
所以需要在那里
try
except
處理異常
修改代碼

運(yùn)行結(jié)果
字母的測(cè)試用例
可以順利地報(bào)錯(cuò)

但是現(xiàn)在還面臨一個(gè)問(wèn)題
是 a 出了問(wèn)題
還是 b 出了問(wèn)題
就是不明確
不知道
報(bào)錯(cuò)細(xì)節(jié)不明確
修改代碼
在process模塊中
分別try...except...

這樣運(yùn)行是沒(méi)有問(wèn)題的
優(yōu)化代碼
不過(guò)應(yīng)該還有更好的方式

轉(zhuǎn)化工作
其實(shí)應(yīng)該在輸入部分完成
輸入變量的容錯(cuò)處理
應(yīng)該在輸入的時(shí)候 就第一時(shí)間做
不要留到數(shù)據(jù)處理時(shí) 才做
總結(jié)
我們細(xì)化了主控程序(main.py)
導(dǎo)入(get_fruits.py)
處理(process.py)
輸出(output.py)
使用了 try 結(jié)構(gòu)
try
except
發(fā)現(xiàn)異常就報(bào)錯(cuò)
輸入部分的錯(cuò)誤
應(yīng)該在 輸入部分來(lái)報(bào)
具體怎么報(bào)呢???
下次再說(shuō)!??
藍(lán)橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython