Python 命名约定——namedtuples

标签 python python-3.x naming-conventions pep8 namedtuple

<分区>

我是 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'])

关于Python 命名约定——namedtuples,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36371047/

相关文章:

python - 使用 ipywidgets 的交互式 matplotlib

python - 正则表达式无法与组中的组一起使用

python - PyMySQL无法执行多个查询

objective-c - 什么是标准的 Objective-C BOOL getter 约定?

C 库代码的正确命名约定

python - 使用 Sklearn 预测的线性回归不起作用。数据不正确

python - 如何使用 f""string 而不是 .format() 打印二进制数?

Python 3.x 舍入行为

python - Unicode解码错误: 'charmap' codec can't decode byte 0x8d in position 386: character maps to <undefined>

swift - Swift 3 的变量命名约定思想