对《Python核心编程》中“第一个Python程序”的改进
概述:
本程序主要是模仿《Python核心編程》中3.6節——第一個Python程序,并在其基礎上做了一些小的改進,而改進的要求則是來源于第三章的課后練習題。
本篇博客的一個核心問題就是在我們如何避免重復制造輪子。
課本源程序:
這里不對課本上的源程序作過多地講解,因為課本本身就說得非常清楚而且易懂。
改進需求:
1. 可以創建新的文件;
2. 可以讀取新的文件;
3. 可以讓用戶選擇創建或是讀取文件.
看到上面的需求,可以你的第一感覺就是,哦,這個太簡單了。不就是把之前寫過的代碼在這里復制粘貼一下就好了啊,最多不過是多加一個if的判斷,有什么難的?
當然我并不否認,這的確是一個簡單的程序。不過從優良的代碼質量來看,可不能是簡單的復制和粘貼這么簡單哦。因為復制代碼到自己的程序中,這會導致代碼的復用性大幅下降,對于小程序可能是沒有什么影響,可是對于一些龐大的系統來說,這可能是一個致命的傷,因為維護起來可能會異常艱難。好了,說了這么多,那就來看看我是怎么解決這個需求的吧。
思路:
我把之前創建文件和讀取文件的文件還是保留,然后在第三個文件makeNreadTextFile.py中使用代碼去調用前兩個文件中的方法。
代碼分析:
makeNreadTextFile.py
大家可以看到上面有幾個地方比較特殊:
1.import subprocess
你百度過后就會知道subprocess是開啟一個新的線程,并與之通信。
2.result = subprocess.call(cmd, 0, None, None, None, None)
通過1就應該知道,這里就是正在通信。
當然,如果只是對書本上的代碼做完整保留,可能達不到我們想要的效果。于是,需要做一些小小的修改。
makeTextFile.py
readTextFile.py
#!/usr/bin/env Python'readTextFile.py -- read and display text file'def read_text_file():# get filenamefname = raw_input('Enter filename:')# attemp to open file for readingtry:fobj = open(fname, 'r')except IOError, e:print "*** file open error:", eelse:# display contents to the screenfor eachLine in fobj:print eachLine,fobj.close()if __name__ == "__main__":read_text_file()
運行效果:
注:這里是利用執行其他Python程序的方式來實現復用。不過,如果你已經學習了《Python核心編程》的第13章或是了解了Python中的class的話,你同樣可以利用類的面向對象來解決問題。
總結
以上是生活随笔為你收集整理的对《Python核心编程》中“第一个Python程序”的改进的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python入门——石头剪刀布程序
- 下一篇: 使用Python运算一个字符串表达式