2

当我阅读 Pythoncollections模块的源代码(http://hg.python.org/cpython/file/2.7/Lib/collections.py#l234)时,我发现该namedtuple函数从一个字符串模板创建了一个类的定义用 执行exec。为什么不通过简单地在函数中定义一个类来完成它,就像你在编写装饰器时所做的那样?在我看来,它会更具可读性和更可靠的解决方案,不是吗?我敢打赌 Python 核心开发人员知道他们在做什么,那么我在这里缺少什么?

4

1 回答 1

1

Raymond Hettinger 在他最初的 ActiveState 配方中简要提到了这一点:

感谢 Peter Kovac 指出关键字参数检查中的缺陷。由于他的评论,该配方已经演变为当前的 exec 风格,我们可以免费获得 Python 的所有高速内置参数检查。构建和执行模板的新风格使得__new____repr__函数比本秘籍的先前版本更快、更清晰。

于 2014-03-12T07:28:19.367 回答