我是 Python 的新手,我一直在阅读在线文档并(尝试)遵循 PEP 0008拥有良好的 Python 代码风格。
我很好奇我在官方Python中找到的代码段docs在研究 re 库时:
import collections
Token = collections.namedtuple('Token', ['typ', 'value', 'line', 'column'])
我不明白为什么 Token
变量的首字母大写;我已经通读了 PEP 0008,但我所看到的内容没有引用资料。如果它是一个常量(据我所知它不是)?
在您提供的代码段中,Token
是一个 named tuple , 绝对不是常数。它没有遵循其他变量名的命名风格,只是强调它是一个类工厂函数。
如果您将 PEP 0008 样式检查器(例如 PyCharm)编写为 token
,则不会出现警告,但我认为这不好实践,因为这样它不会将其区分为类工厂名称。
因此,namedtuples 属于 Class names在 PEP 0008 中。太糟糕了,没有更明确地说明。
除了你为 writing a tokenizer 提到的例子, 这也可以在 collections.namedtuple docs 中看到示例:
Point = namedtuple('Point', ['x', 'y'])
Point3D = namedtuple('Point3D', Point._fields + ('z',))
Book = namedtuple('Book', ['id', 'title', 'authors'])