【问题标题】:How to use tabs not causing PEP warnings如何使用不会导致 PEP 警告的选项卡
【发布时间】:2019-02-18 10:46:45
【问题描述】:

我正在使用 PyCharm 和标签。 如果有一个函数需要传递多个参数,我可以这样做,效果很好:

return render(
    request,
    '/post/list.html',
    {'page': page, 'posts': posts}
)

但有时它看起来更好,更紧凑:

return render(request, '/post/list.html',
              {'page': page, 'posts': posts})

Ant 让事情变得更加复杂。使用制表符时,我得到PEP 8: indentation contains mixed spaces and tabs(因为空格被用来制作视觉缩进。 完全不使用空格:

return render(request, '/post/list.html',
    {'page': page, 'posts': posts})

还返回PEP 通知:PEP 8: continuation line under-indented for visual alignment

我看到使用空格(根据 go PEP 更可取)可以解决这个问题,但我想知道是否有针对制表符用户的解决方案。

编辑:我看到每个人对使用制表符和空格的看法。我想我现在会切换到空间。但问题本身仍然悬而未决。如果您知道如何在不混合制表符和空格的情况下制作漂亮的制表符缩进,我将有兴趣了解这一点。谢谢!

【问题讨论】:

  • “tab-users”,只需很少的培训,就可以学会使用空格;)
  • 不,没有——如果你使用制表符,你必须接受在这些情况下你会过度/不足缩进;由于空格在 Python 中具有语义含义,因此混合制表符和空格是一个非常糟糕的主意。
  • @Chris_Rands 是的,但是使用箭头键和退格键的次数是使用制表符的四倍的想法困扰着我。
  • @ArtyomIlyin 您可以轻松地重新配置您选择的文本编辑器,以便按 Tab 键插入 4 个空格(这是我在 vim 中所做的,通过 set expandtab
  • @Chris_Rands 有什么可以帮助一次导航或删除 4 个空格的吗?插入不是问题。

标签: python pycharm conventions pep


【解决方案1】:

您可以使用 Edit -> Convert Indents -> To spaces (To tabs) 通过菜单将制表符转换为空格或空格转换为制表符。更简单的方法是按两次 Shift 并键入 to 并选择您要应用的选项。

另外,请参考this pycharm 文档(仅第一部分)。它允许您配置在按下制表符时将制表符转换为空格。

编辑:

另外,请阅读this 关于制表符和空格的简短 PEP8 指南。 基本上:

空格是首选的缩进方法。

编辑 2:

如果你想禁用一些警告,当你看到波浪下划线(通常是黄色的警告)时,将光标放在它上面并按 Alt+Enter 并选择 忽略这样的错误

您还可以通过 Settings -> Editor -> Inspections 禁用某些类型的警告,并在 Python 类别中查看更多信息。

【讨论】:

  • 答案的第二部分是你应该依靠什么来前进。只是不要将标签用作标签,PEP 标记它们是有原因的。
  • 是的,我想提一下,谢谢。空格在操作系统上保持一致,而制表符有时会破坏它。这就是 PEP8 建议使用空格的原因。我将其添加为编辑。
  • 您的回答与我的问题并不相符。我知道如何将制表符转换为空格,反之亦然。我不知道如何在没有 PEP 警告的情况下制作漂亮的缩进。但我看到了关于使用标签的情绪:)
  • @DinkoPehar 抱歉,也许我不清楚。我不想仅仅隐藏这些警告。我想从 PEP 的角度以某种方式使一切正确,但使用标签。以及连续行中缩进不足的对齐方式。
  • 您不能更改由 python.org 定义的规则。您只能遵循规则或禁用它们,以便在您使用制表符缩进时 pycharm 不会打扰您。
【解决方案2】:

我正在使用 PyCharm

嗯,确实有人喜欢。

和标签

现在答案很简单:不要。永远不能。你想要空格,其中 4 个,句号。

【讨论】:

  • 老实说,不是一个超级有用的反馈:能够在键盘上一次输入 4(或 2)个空格(通过按 Tab)非常方便,并且通常可以避免缩进错误。您至少应该清楚这与在文件中实际使用选项卡有很大不同,这是不推荐的(有很多充分的理由)。上面的答案解释了如何解决这个问题,因此它更具可操作性。此外,您回复的第一部分是高度固执己见的,这显然违反了 Stackoverflow 的准则。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-06-17
  • 2016-06-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-04
  • 1970-01-01
相关资源
最近更新 更多