关于本教材第十章代码清单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函数运行出现错误,还请路过的大佬指教一二,本人感激不尽。

最后,我想说的是,我是一个图灵社区新进小白,希望以后能和大家多多交流,一起学习!`