命名元组的名称和引用可以不同吗?
Can the name and the reference of a named tuple be different?
在阅读 fmark
对问题 What are "named tuples" in Python? 的回答时,我看到那里给出的示例具有相同的名称和引用,即单词 Point
在下面出现了两次声明:
Point = namedtuple('Point', 'x y')
所以我去参考原文:
https://docs.python.org/2/library/collections.html#collections.namedtuple
在这里我也找到了两个例子:
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
Color = namedtuple('Color', 'red green blue')
最好不要在 Python 中重复单词。例如,整行(对于 Point
示例)可以替换为以下内容:
namedtuple('Point', 'x y')
或
Point = namedtuple('x y')
当然,这是假设命名的元组必须具有相同的名称和引用。所以我的问题是:什么时候建议(如果允许的话)命名元组应该有不同的名称和引用?我还没有遇到一个例子。
你可以做到,它只会惹恼你。
In [1]: import collections
In [2]: Point = collections.namedtuple('Rectangle', 'x y')
In [3]: Point(1, 2)
Out[3]: Rectangle(x=1, y=2)
这很令人困惑,除非你有充分的理由,否则不要这样做。
发生这种情况的原因是因为namedtuple()
只是一个函数,它不知道如何将其用作声明。在具有宏的语言中,namedtuple()
将是一个扩展为声明的宏。因此,您必须指定两次名称,而不是附加宏系统或遍历调用堆栈。
所以它是 Python 的 "warts" 之一,或者是设计上的妥协,具体取决于您的感受。
在阅读 fmark
对问题 What are "named tuples" in Python? 的回答时,我看到那里给出的示例具有相同的名称和引用,即单词 Point
在下面出现了两次声明:
Point = namedtuple('Point', 'x y')
所以我去参考原文:
https://docs.python.org/2/library/collections.html#collections.namedtuple
在这里我也找到了两个例子:
EmployeeRecord = namedtuple('EmployeeRecord', 'name, age, title, department, paygrade')
Color = namedtuple('Color', 'red green blue')
最好不要在 Python 中重复单词。例如,整行(对于 Point
示例)可以替换为以下内容:
namedtuple('Point', 'x y')
或
Point = namedtuple('x y')
当然,这是假设命名的元组必须具有相同的名称和引用。所以我的问题是:什么时候建议(如果允许的话)命名元组应该有不同的名称和引用?我还没有遇到一个例子。
你可以做到,它只会惹恼你。
In [1]: import collections
In [2]: Point = collections.namedtuple('Rectangle', 'x y')
In [3]: Point(1, 2)
Out[3]: Rectangle(x=1, y=2)
这很令人困惑,除非你有充分的理由,否则不要这样做。
发生这种情况的原因是因为namedtuple()
只是一个函数,它不知道如何将其用作声明。在具有宏的语言中,namedtuple()
将是一个扩展为声明的宏。因此,您必须指定两次名称,而不是附加宏系统或遍历调用堆栈。
所以它是 Python 的 "warts" 之一,或者是设计上的妥协,具体取决于您的感受。