pep8符合长json字典查找?

时间:2016-03-08 21:02:57

标签: python json python-2.7 pep8

使用字符长度79,有人会如何制定命令,例如:

return method_returning_json()['LongFieldGroup1']['FieldGroup2']['FieldGroup3']['LongValue']

如果我将查找移动到下一行,例如:

return method_returning_json()\
    ['FieldGroup1']['FieldGroup2']['FieldGroup3']['Value']

pep8抱怨“之前的空格”,因为有几个标签。但是,如果我将第二个/第三个/ etc组移动到换行符,它会做同样的事情。

我知道我可以将# noqa标记添加到该行的末尾,但我希望有更好的方法。

2 个答案:

答案 0 :(得分:3)

使用括号内的隐式行继续:

echo strpos('a b- c a b* c a b+ c', 'c', 1); //output= 5 (But why? Is is must be 12)

             0123456789111
              ^        012
              | your offset (start search 'c')

(您可能需要调整实际缩进以使return (method_returning_json() ['LongFieldGroup1'] ['FieldGroup2'] ['FieldGroup3'] ['LongValue']) 工具满意。)

你甚至可以使用索引括号本身来允许隐式行继续,虽然我并没有真正发现任何特别可读的变体。

pep8

答案 1 :(得分:2)

引用PEP8

  

愚蠢的一致性是小心灵的大地精

     

Guido的一个重要见解是代码的读取频率远高于编写代码。此处提供的准则旨在提高代码的可读性,并使其在各种Python代码中保持一致。正如PEP 20所说,"可读性很重要"。

     

风格指南是关于一致性的。与此风格指南的一致性非常重要。项目的一致性更为重要。一个模块或函数内的一致性是最重要的。

     

然而,知道何时不一致 - 有时风格指南建议不适用。如有疑问,请使用您的最佳判断。查看其他示例并确定最佳效果。并且不要犹豫!

     

特别是:不要为了遵守这个PEP而破坏向后兼容性!

     

忽略特定指南的其他一些好理由:

     

当应用指南时,即使是习惯于阅读此PEP之后的代码的人,也会使代码的可读性降低。

     

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

     

因为有问题的代码早于指南的引入,所以没有其他理由可以修改该代码。

     

当代码需要与不支持样式指南推荐功能的旧版Python兼容时。

在我看来(这只是一个意见)有些时候,例如你的破坏行使代码更难阅读,所以这可能是忽略行长指南的合理时间

话虽如此,如果你真的想把线长保持在79以下,一个 方法可能是将命令实际拆分为单独的行:

some_json = method_returning_json()
key1 = 'FieldGroup1'
key2 = 'FieldGroup2'
key3 = 'FieldGroup3'
return some_json[key1][key2][key3]['Value']

这不像单线方法那样简洁,但每条线都更短。哪个是较小的邪恶是你判断的。