更好的Python列表命名除"列表"之外

clw*_*wen 12 python naming-conventions

名单变量名单"list"最好不要?因为它与python reserved关键字冲突.那么,什么是更好的命名?"input_list"听起来有点尴尬.

我知道它可能是特定于问题的,但是,假设我有一个快速排序函数,那么quick_sort(unsorted_list)仍然有点冗长,因为传递给排序函数的列表显然没有被上下文排序.

任何的想法?

and*_*kus 20

我喜欢用它中的复数形式命名.所以,例如,如果我有一个名字列表,我称之为names,然后我可以写:

for name in names:
Run Code Online (Sandbox Code Playgroud)

我认为看起来很不错.但通常为了您自己的理智,您应该为变量命名,以便您可以从名称中知道它们是什么.这种约定具有与类型无关的额外好处,就像Python本身一样,因为它names可以是任何可迭代对象,例如元组,字典或您自己的自定义(可迭代)对象.你可以使用其中for name in names的任何一个,如果你有一个被称为元组的元组names_list,那就太奇怪了.

(从下面的评论中添加:)在某些情况下,您不必执行此操作.使用类似i索引短循环的规范变量是可以的,因为i通常以这种方式使用.如果你的变量用于多个页面的代码,那么你不能一次看到它的整个生命周期,你应该给它一个合理的名称.

  • +1并且如果没有特定的东西(例如通用的`slice`函数),有很多通用名称 - 数学倾向的`xs/ys/zs`(在某些函数式编程语言中非常流行),`objs`,`items `等 (2认同)
  • 出于好奇,如果你有一个绵羊列表(或任何其他在单数 -> 复数时不会改变的东西),你会怎么做? (2认同)

Jak*_*yer 6

goats
Run Code Online (Sandbox Code Playgroud)

变量名称应该指的是它们不仅仅是它们的类型.


Lel*_*uge 5

Python代表可读性.所以基本上你应该命名可以提高可读性的变量.见PEP20.
您应该只有一般的一致性规则,并且在以下情况下应该打破这种一致性:

  1. 应用规则会使代码的可读性降低,即使对于习惯于阅读遵循规则的代码的人也是如此.

  2. 与周围的代码保持一致也会打破它(可能是出于历史原因) - 虽然这也是一个清理别人的混乱的机会(真正的XP风格)

此外,使用函数命名规则:小写,必要时用下划线分隔,以提高可读性.
所有这些都来自PEP 8