2

由于在 python 中没有显式键入,我希望能够使用命名约定来区分序列和非序列。我已经用 python 编程了一段时间,但我仍然没有找到任何逻辑/实用的方式来命名序列。当然,我翻遍了大名鼎鼎的PEP8,并在 google 上做了一些研究,似乎公认的约定是在变量名的末尾添加字母“s”。

假设我们有一个“权重值”序列,因此序列的变量名应该是weights。到目前为止,这很好,但是在某些情况下,某些单词以“s”结尾并且恰好是命名不是序列的变量的更合乎逻辑的方式。或者假设您将权重序列本身存储在一个序列中。“s”命名约定将命名变量weightss,这很难看。我确信序列有更好的命名约定。

你会建议什么样的序列命名约定?

4

4 回答 4

20

一般来说,避免这种行为。来自PEP8的通知

愚蠢的一致性是小精灵的妖精

这正是调用变量weightss要做的事情。所以通常让你的变量描述它们是什么,而不是根据一些命名约定:

weights = [44, 66, 88]
weight_groups = [[44, 66, 88], ...]

等等

PEP8的同一部分:

但最重要的是:知道何时不一致——有时风格指南并不适用。如有疑问,请使用您的最佳判断。查看其他示例并决定什么看起来最好。不要犹豫,问!

于 2009-03-18T18:00:41.310 回答
10

“s”命名约定将命名变量权重,这很难看。我确信序列有更好的命名约定。

我认为您所描述的约定应被解释为“只要您有某物的列表,请通过将其复数来明确它是一个列表”。例如,如果您有一个草实例列表,您可以调用 this grasses,而不是grasss。我不认为它是按字面意思理解的。

PEP 总是建议您采用自己的方法,如果这种方法更具可读性和实用性的话。正如阿里所提到的,PEP 的指导原则之一是你不应该成为愚蠢一致性的牺牲品。

于 2009-03-18T18:03:23.363 回答
0

无论你的小心脏想要什么......

开个玩笑,但我不会挂断电话的。如果它很难看,请做一些事情以使其更具可读性seq_weight,例如seq_weights

于 2009-03-18T17:55:36.720 回答
0

为什么不只是thing_listor thing_seq

于 2009-03-18T17:55:50.183 回答