擅长:python、mysql、java
<p>在您提供的代码段中,<code>Token</code>是<a href="https://docs.python.org/3/library/collections.html#collections.namedtuple"><strong>named tuple</strong></a>,绝对不是常量。它不遵循其他变量名命名样式,只是为了强调它是一个<strong>类工厂函数</strong>。
如果将pep0008样式检查器写成<em><code>token</code></em>,则不会从pep0008样式检查器发出警告(例如<em>PyCharm</em>),但我认为这不是一个好的实践,因为这种方式无法将它区分为类工厂名称。在</p>
<p>因此,<em>namedtuples</em>属于pep0008中的<a href="https://www.python.org/dev/peps/pep-0008/#class-names">Class names</a>。太糟糕了没有更明确地说明。
除了您提到的<a href="https://docs.python.org/3/library/re.html#writing-a-tokenizer">writing a tokenizer</a>示例外,还可以在<a href="https://docs.python.org/3/library/collections.html#collections.namedtuple">collections.namedtuple docs</a>示例中看到:</p>
<pre><code>Point = namedtuple('Point', ['x', 'y'])
Point3D = namedtuple('Point3D', Point._fields + ('z',))
Book = namedtuple('Book', ['id', 'title', 'authors'])
</code></pre>