在我阅读Python的collections
模块(http://hg.python.org/cpython/file/2.7/Lib/collections.py#l234)的源代码时,我发现namedtuple
函数从字符串模板创建了一个类的定义,使用exec
执行。为什么不通过简单地定义函数内部的类来完成它,就像你在编写装饰器时那样做?在我看来,这将是更可读和更可靠的解决方案,不是吗?我敢打赌Python核心开发人员知道他们做了什么,所以我在这里缺少什么?
答案 0 :(得分:1)
Raymond Hettinger在他的original ActiveState recipe:
中简要提到了这一点感谢Peter Kovac指出关键字的缺陷 参数检查。由于他的评论,配方已经演变为 它目前的exec风格,我们得到了所有Python的高速内置 参数免费检查。新的建筑风格和执行力 模板使
__new__
和__repr__
函数的速度更快 比以前版本的食谱清洁。