9

我正在阅读collections.py昨天的源代码。

namedtuple函数中,template会生成一个字符串,然后exec在临时命名空间中进行编辑。

在命名空间字典中,被重property命名为_property和。tuple_tuple

我想知道这背后的原因是什么。这种重命名有助于避免哪些问题?

4

2 回答 2

10

通常,标准库中有时会使用下划线名称来保持命名空间的整洁。

在 _tuple 的情况下,这是必要的,因为您可以使用“tuple”作为字段名称:

>>> Example = namedtuple('Example', ['list', 'tuple', 'property'])
>>> e.list
[10, 20, 30]
>>> e.tuple
(40, 50, 60)
>>> e.property
'Boardwalk'
于 2012-07-07T01:53:27.180 回答
0

它避免了关键字名称冲突。

假设我们有一个假想的清单['when', 'who', 'why', 'where', 'with']

IE。没有翻译员就不能打字my_name_tuple.with

仔细阅读 namedtuple 上的文档,你应该会明白的。

于 2012-07-07T01:53:37.877 回答