我正在阅读collections.py
昨天的源代码。
在namedtuple
函数中,template
会生成一个字符串,然后exec
在临时命名空间中进行编辑。
在命名空间字典中,被重property
命名为_property
和。tuple
_tuple
我想知道这背后的原因是什么。这种重命名有助于避免哪些问题?
我正在阅读collections.py
昨天的源代码。
在namedtuple
函数中,template
会生成一个字符串,然后exec
在临时命名空间中进行编辑。
在命名空间字典中,被重property
命名为_property
和。tuple
_tuple
我想知道这背后的原因是什么。这种重命名有助于避免哪些问题?
通常,标准库中有时会使用下划线名称来保持命名空间的整洁。
在 _tuple 的情况下,这是必要的,因为您可以使用“tuple”作为字段名称:
>>> Example = namedtuple('Example', ['list', 'tuple', 'property'])
>>> e.list
[10, 20, 30]
>>> e.tuple
(40, 50, 60)
>>> e.property
'Boardwalk'
它避免了关键字名称冲突。
假设我们有一个假想的清单['when', 'who', 'why', 'where', 'with']
IE。没有翻译员就不能打字my_name_tuple.with
。
仔细阅读 namedtuple 上的文档,你应该会明白的。