關於Python基礎教程第三版(中文版)第十章程式碼清單10-11的改正

7song發表於2020-05-23

關於本教材第十章程式碼清單10-11,許多讀者根據原文程式碼建立了templates程式後,執行隨後的兩個示例時,可能得不到想要的結果,並且會在命令列中看見錯誤提示。 本人在讀到該程式碼清單時,根據本書之前提到的知識,覺得該程式並不能執行成功。當我根據原始碼試了之後,果然如此。 以清單10-12為例,當eval進行賦值操作,如‘x=2’時,會引發SyntaxError,該異常將被捕獲,但並未將鍵值對'x':2寫入scope中。在進行之後的表示式運算,如'x'時,由於scope中沒有鍵'x',將會引發KeyError,而程式中並沒有能處理該異常的語句,進而會導致程式崩潰。 要修復這個錯誤,一個可行的方案是將程式碼清單10-11中except Syntax中的程式碼塊(即return '')修改為如下程式碼:

enter image description here

修改後,對於處理隨後的兩個示例,能簡單達到預期的效果。

當然,對於認真閱讀過本教材的讀者來說,都應該能夠發現其中的錯誤並獨立進行處理,所以如有冒犯之處,還請大家諒解。 另外,本人是使用的是Python3.8版本,並且對於python的學習才進行了一週左右,對函式eval在之前版本里的機制並未進行深入研究,如果是因為版本的差異而導致eval函式執行出現錯誤,還請路過的大佬指教一二,本人感激不盡。

最後,我想說的是,我是一個圖靈社群新進小白,希望以後能和大家多多交流,一起學習!`

相關文章