这是一些代码:
foo = "Bears"
"Lions, Tigers and %(foo)s" % locals()
Run Code Online (Sandbox Code Playgroud)
我的PEP8 linter(SublimeLinter)抱怨这个,因为foo是"未引用的".我的问题是PEP8是否应该将这种类型的字符串插值计为"引用",或者是否有充分的理由考虑这种"坏的风格".
好吧,它没有被引用.可疑样式的部分locals()用于访问变量而不是仅通过名称访问它们.看到上一个问题,为什么这是一个可疑的想法.这不是一件可怕的事情,但对于你想要长期维护的程序来说,这不是一个好的风格.
编辑:当你使用文字格式字符串时,它似乎更明确.但前一篇文章的部分内容是,在较大的程序中,您可能最终不会使用文字格式字符串.如果它是一个小程序,你不在乎,继续使用它.但警告可能导致可维护性问题的事情也是风格指南和短信的一部分.
此外,locals不是在文字中明确引用的名称的规范表示.它是本地命名空间中所有名称的规范表示.如果你愿意的话,你仍然可以这样做,但它基本上是一个宽松/草率的替代方案,明确地使用你正在使用的名字,这也就是那种短信应该警告你的东西.
| 归档时间: |
|
| 查看次数: |
281 次 |
| 最近记录: |