由于python中没有显式输入,我希望能够使用命名约定区分序列和非序列。我已经用python编程了一段时间,我仍然没有找到任何逻辑/实用的方法来命名序列。当然,我浏览了着名的PEP8,并对google进行了一些研究,似乎接受的约定是在变量名的末尾添加字母“s”。
假设我们有一系列“权重值”,因此序列的变量名称应为权重。到目前为止,这很好,但是有些情况下,某些单词以“s”结尾,恰好是命名变量的更合理的方式,而不是序列。或者,假设您将权重序列存储在序列中。 “s”命名约定将变量命名为 weightss ,这很难看。我确信序列的命名约定更好。
您建议使用哪种序列命名约定?
答案 0 :(得分:20)
一般来说,避免这种行为。来自PEP8
的通知愚蠢的一致性是大地精 小心灵
这正是调用变量weightss
所做的事情。所以通常你的变量描述它们是什么,而不是根据一些命名约定:
weights = [44, 66, 88]
weight_groups = [[44, 66, 88], ...]
等
来自PEP8的相同部分:
但最重要的是:知道什么时候成为 不一致 - 有时是风格 指南只是不适用。什么时候进去 怀疑,用你最好的判断。看 在其他例子,并决定什么 看起来最好。并且不要犹豫 问!
答案 1 :(得分:10)
“s”命名约定会命名变量weightss,这很难看。我确信序列的命名约定更好。
我认为你所描述的约定意味着被解释为“每当你有某些东西的清单时,通过复数来明确它是一个列表”。例如,如果您有草的实例列表,则可以调用此grasses
,而不是grasss
。我不认为这意味着你要采取它的字面意思。
PEP总是建议您采用自己的方法,如果它更具可读性和实用性。正如Ali mentioned,PEP的指导原则之一就是你不应该成为愚蠢的一致性的牺牲品。
答案 2 :(得分:0)
无论你有什么小小的心愿......
开玩笑,但我不会挂断电话。如果它很难看,请做一些让它更具可读性的内容,例如seq_weight
和seq_weights
答案 3 :(得分:-1)
为什么不只是thing_list
或thing_seq
?