当使用Python字典(字典)键,似乎有几个常用的方法:什么是字典词典键常量的Python最佳实践?
some_dict['key_name'] # string constants everywhere
some_dict[KeyConstants.key_name] # where class KeyConstants: key_name: 'key_name'
some_dict[KEY_NAME] # with from some_module import KEY_NAME # a module level constant
“KEY_NAME '的缺点是你重复consta遍及你的代码。这不是干的。更糟糕的是,如果您曾经发布过API(从最广泛的意义上说),那么您的API会让消费者在任何地方重复使用这些常量,如果您想将“key_name”更改为“better_key_name”,这将是一个突破性更改。
这是键入语言DRY方法,常量合并在一个地方。它唯一的缺点是它很丑,可读性较差,而且比较冗长。 Pythonic原则主要禁止这一点。它允许您轻松更改表示键的常量,因为每个人都对变量KeyConstants.key_name进行编码。它也适用于IDE进行重构。
在PEP 8风格指南中推荐使用模块级别的常量。 ALL_CAPS_ARE_LOUD,难以输入。这有一些的这两个选项优点1和2
什么是字典键常量其他一些最佳做法?上述哪种方法是首选,何时?
为什么有这么多恒定的钥匙呢?为什么不使用模块级别的变量或类似于记录的对象来保存属性? – delnan 2011-05-22 14:42:38
如果键是可变的,那么字典是很好的,否则你可以在一个类上使用命名的元组或属性。使用常量键应该是一个非常罕见的场合。使用JSON时或与数据库/存储nosql的无ORM处理(例如pymongo而不MongoEngine) – 2011-05-22 15:06:39
连键问题的字典是极为普遍的。虽然你可以用字典的键成类与属性,你就结束了一堆难看的包装/拆包管道代码,如果基础数据字典开始。 – velshin 2011-05-22 19:36:09