Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python缩进;空行“;_Python_Coding Style_Idioms - Fatal编程技术网

Python缩进;空行“;

Python缩进;空行“;,python,coding-style,idioms,Python,Coding Style,Idioms,首选哪一种(“.”表示空白) (A) (B) 我的直觉是B(这也是vim为我做的),但我看到人们一直在使用A。这只是因为大多数编辑都坏了吗?Emacs对我来说是这样的,但我真的认为这无关紧要。A)意味着你可以在没有任何标签的正确缩进中添加一行。 < P>空行属于()>代码>,因此我认为代码> a 是最自然的。但我想这只是一个意见问题。我不一定把第一个例子称为“坏掉”,因为我知道有些人讨厌在代码中上下移动光标时光标“向后跳”的情况。例如,Visual Studio(至少2008年)会自动防止出现这

首选哪一种(“.”表示空白)

(A)

(B)


我的直觉是B(这也是vim为我做的),但我看到人们一直在使用A。这只是因为大多数编辑都坏了吗?

Emacs对我来说是这样的,但我真的认为这无关紧要。A)意味着你可以在没有任何标签的正确缩进中添加一行。

< P>空行属于<代码>()>代码>,因此我认为<>代码> a <代码>是最自然的。但我想这只是一个意见问题。

我不一定把第一个例子称为“坏掉”,因为我知道有些人讨厌在代码中上下移动光标时光标“向后跳”的情况。例如,Visual Studio(至少2008年)会自动防止出现这种情况,而不会在这些行上使用任何空白字符。

如果使用A,您可以在python shell中复制粘贴块,B将出现意外的缩进错误。

在这个问题上似乎不清楚,虽然关于“空行”的陈述可能会被解释为有利于B。pep8样式检查器(pep8.py)更喜欢B,并且如果使用A会发出警告;然而,这两种变化都是合法的。我个人的观点是,由于Python在任何一种情况下都能成功地解释代码,所以这其实并不重要,而试图强制执行它将是一项非常艰巨的工作,收获甚微。我想,如果你非常坚定地支持其中一个,你可以自动地将一个转化为另一个。但是,试图手动修复所有这些行将是一项巨大的任务,而且确实不值得付出努力,IMHO。

我在开源开发方面的经验是,永远不要在空白行中留下空白。此外,也不应留下尾随空白


这是一个编码礼仪的问题。

如果使用B,TextMate会打破块折叠,我更喜欢a,因为它更“合乎逻辑”。

为空行添加适当的缩进(问题中的样式a)通过启用显示空白,极大地提高了代码的可读性,因为这样可以更容易地查看空行后的代码是否属于同一缩进块

对于像Python这样没有结束语句或右括号的语言,我很惊讶这不是PEP的一部分。强烈建议在打开显示空白的情况下编辑Python,以避免拖尾空白和混合缩进

比较阅读以下内容:

(A)

(B)


A中,最后两行是
foo
的一部分,这一点要清楚得多。这在更高的缩进级别上更有用。

vi
隐式地阻止了A中的行为,因为
{
/
}
导航不再按预期工作
git
在运行
git diff
时以红色突出显示它,从而明确禁止使用它。我还认为,如果一行包含空格,它就不是空行


出于这个原因,我非常喜欢B。没有什么比期望跳过六行左右的
{
运动并最终到达类def的顶部更糟糕的了。

B是首选的-即没有缩进

避免在任何地方尾随空格。因为它通常是不可见的,所以可能会造成混淆:例如,后跟空格的反斜杠和换行不算作行继续标记。一些编辑器不保留它,许多项目(如CPython本身)具有拒绝它的预提交挂钩


有意思。我刚刚用EditPadPro试过,它也使用缩进级别进行代码折叠,而且它能很好地处理空行。@Lo'oris缩进对代码是必需的,但对空行不是。因此空行中的任何空格都是不必要的。这只是python的另一个设计缺陷。“这对于包含代码的行是强制性的,但对于空行则不是"很愚蠢。@Lohoris我不同意。想象一下,如果调试一种语言,其中一个空行会导致完全不同的行为,那将是多么令人愤怒。如果不使用高级编辑器,甚至都无法看到。在一种意图很重要的语言中,我希望程序员能够注意到这一点,并拥有一个高级编辑器。这个答案没有添加任何有用的内容。因为在Python中缩进是必需的,PEP8应该支持缩进空行而不是“空”行空行也是。Imho。有很好的论据支持A--复制到shell中,B会导致某些编辑器出现问题。除非A也有问题,否则它似乎是“A在某些情况下有帮助,没有伤害”,因此应该使用A。
s/^([\t]+)([^\r\n]*)(\r?\n)\r?\n/\1\2\3\1\3/
。搜索:捕获行首的制表符或空格,捕获任何非换行符(如果有),捕获换行符,查找换行符*。替换:缩进,行内容,换行符,缩进,换行符。警告:如果缩进行打开一个新块,正则表达式不会检测到这一点,只需将下一行放入一行t相同的缩进级别。*我忽略了第二个换行格式,只使用前一个换行格式来提高一致性。pep8 linter在一个
W293空行中抱怨包含空格,而许多其他python linter都这样做。实际上,它说的是“避免在任何地方拖尾空格”。我自己发布了。不确定这是否是你的意思,但许多编辑器支持自动修剪尾随空格,你可以很容易地在
sed
中编写脚本来完成同样的操作。我尝试在idlex中使用a,但得到了一个无效的语法错误。@obesechicken13这些点应该是空格,它们只是为了让你知道而绘制的它们就在那里。当使用IPython时,你应该用
%paste
粘贴。它可以处理A或B。我同意这更自然,我不同意这是一个意见问题。这是一个事实。Git mer
def foo():
    x = 1
    y = 2
....
    if True:
        bar()
def foo():
    x = 1
    y = 2

    if True:
        bar()
def foo():
....x = 1
....y = 2
....
....if True:
........bar()
def foo():
....x = 1
....y = 2

....if True:
........bar()